提交 ad97c98a 编写于 作者: fxy060608's avatar fxy060608

Merge branch 'dev' of https://github.com/dcloudio/uni-app into alpha

# Conflicts:
#	packages/uni-h5/dist/index.umd.min.js
......@@ -47,10 +47,6 @@ Vue.use(require('uni-view/plugins').default, {
routes: __uniRoutes
})
Vue.config.errorHandler = function (err, vm, info) {
UniServiceJSBridge.emit('onError', err)
}
initVue(Vue)
require('uni-platform/components')
require('uni-components')
......@@ -12155,9 +12155,22 @@ var serviceContext = (function () {
'uni-web-view'
];
function hasLifecycleHook (vueOptions = {}, hook) {
return Array.isArray(vueOptions[hook]) && vueOptions[hook].length
}
// 使用白名单过滤(前期有一批自定义组件使用了 uni-)
function initVue (Vue) {
function initVue (Vue) {
Vue.config.errorHandler = function (err) {
const app = getApp();
if (app && hasLifecycleHook(app.$options, 'onError')) {
app.__call_hook('onError', err);
} else {
console.error(err);
}
};
const oldIsReservedTag = Vue.config.isReservedTag;
Vue.config.isReservedTag = function (tag) {
......@@ -12768,10 +12781,6 @@ var serviceContext = (function () {
return key
}
function hasLifecycleHook (vueOptions = {}, hook) {
return Array.isArray(vueOptions[hook]) && vueOptions[hook].length
}
/* @flow */
const LIFECYCLE_HOOKS = [
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
dist/compileTemplate
dist/parse
dist/parseCustomBlocks
dist/stylePlugins/scoped.js
\ No newline at end of file
dist/stylePlugins/scoped.js
dist/stylePlugins/remove-scoped.js
\ No newline at end of file
......@@ -7,6 +7,7 @@ const postcss = require('postcss');
const trim_1 = __importDefault(require("./stylePlugins/trim"));
const scoped_1 = __importDefault(require("./stylePlugins/scoped"));
const styleProcessors_1 = require("./styleProcessors");
const removeScoped_1 = __importDefault(require("./stylePlugins/remove-scoped"));
function compileStyle(options) {
return doCompileStyle(Object.assign({}, options, { isAsync: false }));
}
......@@ -27,6 +28,8 @@ function doCompileStyle(options) {
}
if (scoped) {
plugins.push(scoped_1.default(id));
} else { // fixed by xxxxxx
plugins.push(removeScoped_1.default(id));
}
const postCSSOptions = Object.assign({}, postcssOptions, { to: filename, from: filename });
if (map) {
......
"use strict";
var __importStar = (this && this.__importStar) || function(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", {
value: true
});
const postcss = __importStar(require("postcss"));
// postcss-selector-parser does have typings but it's problematic to work with.
const selectorParser = require('postcss-selector-parser');
exports.default = postcss.plugin('remove-scoped', (options) => (root) => {
root.each(function rewriteSelector(node) {
if (!node.selector) {
// handle media queries
if (node.type === 'atrule') {
if (node.name === 'media' || node.name === 'supports') {
node.each(rewriteSelector);
}
}
return;
}
node.selector = selectorParser((selectors) => {
selectors.each((selector) => {
let node = null;
// find the last child node to insert attribute selector
selector.each((n) => {
// ">>>" combinator
// and /deep/ alias for >>>, since >>> doesn't work in SASS
if (n.type === 'combinator' &&
(n.value === '>>>' || n.value === '/deep/')) {
n.value = ' ';
n.spaces.before = n.spaces.after = '';
return false;
}
// in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias
if (n.type === 'pseudo' && n.value === '::v-deep') {
n.value = n.spaces.before = n.spaces.after = '';
return false;
}
if (n.type !== 'pseudo' && n.type !== 'combinator') {
node = n;
}
});
if (node) {
node.spaces.after = '';
} else {
// For deep selectors & standalone pseudo selectors,
// the attribute selectors are prepended rather than appended.
// So all leading spaces must be eliminated to avoid problems.
selector.first.spaces.before = '';
}
});
}).processSync(node.selector);
});
});
......@@ -5808,8 +5808,14 @@ function getTarget(obj, path) {
function internalMixin(Vue) {
Vue.config.errorHandler = function(err) {
console.error(err);
Vue.config.errorHandler = function(err) {
/* eslint-disable no-undef */
var app = getApp();
if (app && app.onError) {
app.onError(err);
} else {
console.error(err);
}
};
var oldEmit = Vue.prototype.$emit;
......@@ -5832,14 +5838,14 @@ function internalMixin(Vue) {
if (this.$scope && this.$scope[method]) {
return this.$scope[method](args)
}
// mp-alipay
if(typeof my === 'undefined'){
return
// mp-alipay
if (typeof my === 'undefined') {
return
}
if (method === 'createSelectorQuery') {
if (method === 'createSelectorQuery') {
/* eslint-disable no-undef */
return my.createSelectorQuery(args)
} else if (method === 'createIntersectionObserver') {
} else if (method === 'createIntersectionObserver') {
/* eslint-disable no-undef */
return my.createIntersectionObserver(args)
}
......
......@@ -212,27 +212,6 @@ if (process.env.UNI_USING_V3) {
} else {
root.walkRules(rule => {
const selectors = transformSelector(rule.selectors.join(','), function (selectors) {
selectors.each((selector) => {
// find the last child node to insert attribute selector
selector.each((n) => {
// ">>>" combinator
// and /deep/ alias for >>>, since >>> doesn't work in SASS
if (n.type === 'combinator' &&
(n.value === '>>>' || n.value ===
'/deep/')) {
n.value = ' '
n.spaces.before = n.spaces.after = ''
return false
}
// in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias
if (n.type === 'pseudo' && n.value ===
'::v-deep') {
n.value = n.spaces.before = n.spaces.after =
''
return false
}
})
})
selectors.walkUniversals(node => {
node.parent.remove()
})
......
......@@ -22,27 +22,6 @@ module.exports = postcss.plugin('postcss-uniapp-plugin', function (opts) {
// complexSelector => simpleSelectors
// "a.b#c" => ["a", ".b", "#c"]
transformSelector(complexSelector, simpleSelectors => {
simpleSelectors.each((selector) => {
// find the last child node to insert attribute selector
selector.each((n) => {
// ">>>" combinator
// and /deep/ alias for >>>, since >>> doesn't work in SASS
if (n.type === 'combinator' &&
(n.value === '>>>' || n.value ===
'/deep/')) {
n.value = ' '
n.spaces.before = n.spaces.after = ''
return false
}
// in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias
if (n.type === 'pseudo' && n.value ===
'::v-deep') {
n.value = n.spaces.before = n.spaces.after =
''
return false
}
})
})
// only process type selector, leave alone class & id selectors
return simpleSelectors.walkTags(tag => {
if (tag.value === 'page') {
......
// 使用白名单过滤(前期有一批自定义组件使用了 uni-)
import tags from 'uni-helpers/tags'
export default function initVue (Vue) {
import {
hasLifecycleHook
} from 'uni-helpers/index'
export default function initVue (Vue) {
Vue.config.errorHandler = function (err) {
const app = getApp()
if (app && hasLifecycleHook(app.$options, 'onError')) {
app.__call_hook('onError', err)
} else {
console.error(err)
}
}
const oldIsReservedTag = Vue.config.isReservedTag
Vue.config.isReservedTag = function (tag) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册