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

wip(uts): add isAppUVueNativeTag

上级 a2d83400
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
"@babel/types": "^7.20.7", "@babel/types": "^7.20.7",
"@dcloudio/uni-cli-shared": "3.0.0-alpha-3080220230428001", "@dcloudio/uni-cli-shared": "3.0.0-alpha-3080220230428001",
"@dcloudio/uni-nvue-styler": "3.0.0-alpha-3080220230428001", "@dcloudio/uni-nvue-styler": "3.0.0-alpha-3080220230428001",
"@dcloudio/uni-shared": "3.0.0-alpha-3080220230428001",
"@rollup/pluginutils": "^4.2.0", "@rollup/pluginutils": "^4.2.0",
"@vue/compiler-core": "3.2.47", "@vue/compiler-core": "3.2.47",
"@vue/compiler-sfc": "3.2.47", "@vue/compiler-sfc": "3.2.47",
...@@ -37,4 +38,4 @@ ...@@ -37,4 +38,4 @@
"@types/debug": "^4.1.7", "@types/debug": "^4.1.7",
"@types/fs-extra": "^9.0.13" "@types/fs-extra": "^9.0.13"
} }
} }
\ No newline at end of file
...@@ -124,6 +124,7 @@ function normalizeCode(code: string, isMain = false) { ...@@ -124,6 +124,7 @@ function normalizeCode(code: string, isMain = false) {
} }
return ` return `
export function main() { export function main() {
definePageRoutes()
createPage(__uniRoutes[0]) createPage(__uniRoutes[0])
} }
` `
......
...@@ -59,7 +59,9 @@ ${imports ...@@ -59,7 +59,9 @@ ${imports
return `import { ${className}Class } from './${p}.uvue?type=page'` return `import { ${className}Class } from './${p}.uvue?type=page'`
}) })
.join('\n')} .join('\n')}
const __uniRoutes = [${routes.join(',\n')}] function definePageRoutes() {
${routes.map((route) => `__uniRoutes.push(${route})`).join('\n')}
}
` `
} }
}, },
......
...@@ -8,6 +8,7 @@ import { ...@@ -8,6 +8,7 @@ import {
transformOn, transformOn,
} from '@vue/compiler-core' } from '@vue/compiler-core'
import { isAppUVueNativeTag } from '@dcloudio/uni-shared'
import './runtimeHelpers' import './runtimeHelpers'
import { CodegenResult, CompilerOptions } from './options' import { CodegenResult, CompilerOptions } from './options'
...@@ -55,6 +56,9 @@ export function compile( ...@@ -55,6 +56,9 @@ export function compile(
options: CompilerOptions options: CompilerOptions
): CodegenResult { ): CodegenResult {
const ast = baseParse(template, { const ast = baseParse(template, {
isNativeTag(tag) {
return isAppUVueNativeTag(tag)
},
isCustomElement(tag) { isCustomElement(tag) {
return true return true
}, },
......
...@@ -162,6 +162,19 @@ const NVUE_CUSTOM_COMPONENTS = [ ...@@ -162,6 +162,19 @@ const NVUE_CUSTOM_COMPONENTS = [
'picker-view', 'picker-view',
'picker-view-column', 'picker-view-column',
]; ];
function isAppUVueNativeTag(tag) {
if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {
return false;
}
if (isBuiltInComponent(tag)) {
return true;
}
// u-text,u-video...
if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {
return true;
}
return false;
}
function isAppNVueNativeTag(tag) { function isAppNVueNativeTag(tag) {
if (NVUE_BUILT_IN_TAGS.includes(tag)) { if (NVUE_BUILT_IN_TAGS.includes(tag)) {
return true; return true;
...@@ -1586,6 +1599,7 @@ exports.invokeCreateErrorHandler = invokeCreateErrorHandler; ...@@ -1586,6 +1599,7 @@ exports.invokeCreateErrorHandler = invokeCreateErrorHandler;
exports.invokeCreateVueAppHook = invokeCreateVueAppHook; exports.invokeCreateVueAppHook = invokeCreateVueAppHook;
exports.isAppNVueNativeTag = isAppNVueNativeTag; exports.isAppNVueNativeTag = isAppNVueNativeTag;
exports.isAppNativeTag = isAppNativeTag; exports.isAppNativeTag = isAppNativeTag;
exports.isAppUVueNativeTag = isAppUVueNativeTag;
exports.isBuiltInComponent = isBuiltInComponent; exports.isBuiltInComponent = isBuiltInComponent;
exports.isComponentInternalInstance = isComponentInternalInstance; exports.isComponentInternalInstance = isComponentInternalInstance;
exports.isComponentTag = isComponentTag; exports.isComponentTag = isComponentTag;
......
...@@ -265,6 +265,8 @@ export declare function isAppNativeTag(tag: string): boolean; ...@@ -265,6 +265,8 @@ export declare function isAppNativeTag(tag: string): boolean;
export declare function isAppNVueNativeTag(tag: string): boolean; export declare function isAppNVueNativeTag(tag: string): boolean;
export declare function isAppUVueNativeTag(tag: string): boolean;
export declare function isBuiltInComponent(tag: string): boolean; export declare function isBuiltInComponent(tag: string): boolean;
export declare function isComponentInternalInstance(vm: unknown): vm is ComponentInternalInstance; export declare function isComponentInternalInstance(vm: unknown): vm is ComponentInternalInstance;
......
...@@ -160,6 +160,19 @@ const NVUE_CUSTOM_COMPONENTS = [ ...@@ -160,6 +160,19 @@ const NVUE_CUSTOM_COMPONENTS = [
'picker-view', 'picker-view',
'picker-view-column', 'picker-view-column',
]; ];
function isAppUVueNativeTag(tag) {
if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {
return false;
}
if (isBuiltInComponent(tag)) {
return true;
}
// u-text,u-video...
if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {
return true;
}
return false;
}
function isAppNVueNativeTag(tag) { function isAppNVueNativeTag(tag) {
if (NVUE_BUILT_IN_TAGS.includes(tag)) { if (NVUE_BUILT_IN_TAGS.includes(tag)) {
return true; return true;
...@@ -1451,4 +1464,4 @@ function getEnvLocale() { ...@@ -1451,4 +1464,4 @@ function getEnvLocale() {
return (lang && lang.replace(/[.:].*/, '')) || 'en'; return (lang && lang.replace(/[.:].*/, '')) || 'en';
} }
export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, E$1 as Emitter, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, OFF_THEME_CHANGE, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_INIT, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_CHANGE, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SAVE_EXIT_STATE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, borderStyles, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultNVueRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getLen, getValueByDataPath, initCustomDatasetOnce, invokeArrayFns, invokeCreateErrorHandler, invokeCreateVueAppHook, isAppNVueNativeTag, isAppNativeTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isMiniProgramNativeTag, isRootHook, isRootImmediateHook, isUniLifecycleHook, normalizeDataset, normalizeEventType, normalizeStyles, normalizeTabBarStyles, normalizeTarget, normalizeTitleColor, onCreateVueApp, once, parseEventName, parseNVueDataset, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, sortObject, stringifyQuery, updateElementStyle }; export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, E$1 as Emitter, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, OFF_THEME_CHANGE, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_INIT, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_CHANGE, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SAVE_EXIT_STATE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, borderStyles, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultNVueRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatDateTime, formatLog, getCustomDataset, getEnvLocale, getLen, getValueByDataPath, initCustomDatasetOnce, invokeArrayFns, invokeCreateErrorHandler, invokeCreateVueAppHook, isAppNVueNativeTag, isAppNativeTag, isAppUVueNativeTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isMiniProgramNativeTag, isRootHook, isRootImmediateHook, isUniLifecycleHook, normalizeDataset, normalizeEventType, normalizeStyles, normalizeTabBarStyles, normalizeTarget, normalizeTitleColor, onCreateVueApp, once, parseEventName, parseNVueDataset, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, sortObject, stringifyQuery, updateElementStyle };
...@@ -172,6 +172,20 @@ const NVUE_CUSTOM_COMPONENTS = [ ...@@ -172,6 +172,20 @@ const NVUE_CUSTOM_COMPONENTS = [
'picker-view-column', 'picker-view-column',
] ]
export function isAppUVueNativeTag(tag: string) {
if (NVUE_CUSTOM_COMPONENTS.includes(tag)) {
return false
}
if (isBuiltInComponent(tag)) {
return true
}
// u-text,u-video...
if (NVUE_U_BUILT_IN_TAGS.includes(tag)) {
return true
}
return false
}
export function isAppNVueNativeTag(tag: string) { export function isAppNVueNativeTag(tag: string) {
if (NVUE_BUILT_IN_TAGS.includes(tag)) { if (NVUE_BUILT_IN_TAGS.includes(tag)) {
return true return true
......
...@@ -369,6 +369,9 @@ importers: ...@@ -369,6 +369,9 @@ importers:
'@dcloudio/uni-nvue-styler': '@dcloudio/uni-nvue-styler':
specifier: 3.0.0-alpha-3080220230428001 specifier: 3.0.0-alpha-3080220230428001
version: link:../uni-nvue-styler version: link:../uni-nvue-styler
'@dcloudio/uni-shared':
specifier: 3.0.0-alpha-3080220230428001
version: link:../uni-shared
'@rollup/pluginutils': '@rollup/pluginutils':
specifier: ^4.2.0 specifier: ^4.2.0
version: 4.2.0 version: 4.2.0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册