Просмотр исходного кода

fix(build): remove __RUNTIME_COMPILE__ flag

behavior should be consistent in all builds. fix #817
Evan You 6 лет назад
Родитель
Сommit
206640a2d8

+ 1 - 1
packages/runtime-core/__tests__/hmr.spec.ts

@@ -19,7 +19,7 @@ const { createRecord, rerender, reload } = __VUE_HMR_RUNTIME__
 function compileToFunction(template: string) {
   const { code } = baseCompile(template)
   const render = new Function('Vue', code)(runtimeTest) as RenderFunction
-  render.isRuntimeCompiled = true
+  render._rc = true // isRuntimeCompiled
   return render
 }
 

+ 7 - 12
packages/runtime-core/src/component.ts

@@ -96,7 +96,7 @@ export interface SetupContext {
 
 export type RenderFunction = {
   (): VNodeChild
-  isRuntimeCompiled?: boolean
+  _rc?: boolean // isRuntimeCompiled
 }
 
 export interface ComponentInternalInstance {
@@ -437,29 +437,24 @@ function finishComponentSetup(
       instance.render = Component.render as RenderFunction
     }
   } else if (!instance.render) {
-    if (__RUNTIME_COMPILE__ && Component.template && !Component.render) {
-      // __RUNTIME_COMPILE__ ensures `compile` is provided
-      Component.render = compile!(Component.template, {
+    if (compile && Component.template && !Component.render) {
+      Component.render = compile(Component.template, {
         isCustomElement: instance.appContext.config.isCustomElement || NO
       })
       // mark the function as runtime compiled
-      ;(Component.render as RenderFunction).isRuntimeCompiled = true
+      ;(Component.render as RenderFunction)._rc = true
     }
 
     if (__DEV__ && !Component.render) {
       /* istanbul ignore if */
-      if (!__RUNTIME_COMPILE__ && Component.template) {
+      if (!compile && Component.template) {
         warn(
           `Component provides template but the build of Vue you are running ` +
             `does not support runtime template compilation. Either use the ` +
             `full build or pre-compile the template using Vue CLI.`
         )
       } else {
-        warn(
-          `Component is missing${
-            __RUNTIME_COMPILE__ ? ` template or` : ``
-          } render function.`
-        )
+        warn(`Component is missing template or render function.`)
       }
     }
 
@@ -468,7 +463,7 @@ function finishComponentSetup(
     // for runtime-compiled render functions using `with` blocks, the render
     // proxy used needs a different `has` handler which is more performant and
     // also only allows a whitelist of globals to fallthrough.
-    if (__RUNTIME_COMPILE__ && instance.render.isRuntimeCompiled) {
+    if (instance.render._rc) {
       instance.withProxy = new Proxy(
         instance,
         runtimeCompiledRenderProxyHandlers

+ 7 - 4
packages/runtime-core/src/componentProxy.ts

@@ -75,10 +75,6 @@ const enum AccessTypes {
 
 export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
   get(target: ComponentInternalInstance, key: string) {
-    // fast path for unscopables when using `with` block
-    if (__RUNTIME_COMPILE__ && (key as any) === Symbol.unscopables) {
-      return
-    }
     const {
       renderContext,
       data,
@@ -189,6 +185,13 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
 
 export const runtimeCompiledRenderProxyHandlers = {
   ...PublicInstanceProxyHandlers,
+  get(target: ComponentInternalInstance, key: string) {
+    // fast path for unscopables when using `with` block
+    if ((key as any) === Symbol.unscopables) {
+      return
+    }
+    return PublicInstanceProxyHandlers.get!(target, key, target)
+  },
   has(_target: ComponentInternalInstance, key: string) {
     return key[0] !== '_' && !isGloballyWhitelisted(key)
   }

+ 1 - 6
packages/runtime-dom/src/index.ts

@@ -58,12 +58,7 @@ export const createApp = ((...args) => {
     const container = normalizeContainer(containerOrSelector)
     if (!container) return
     const component = app._component
-    if (
-      __RUNTIME_COMPILE__ &&
-      !isFunction(component) &&
-      !component.render &&
-      !component.template
-    ) {
+    if (!isFunction(component) && !component.render && !component.template) {
       component.template = container.innerHTML
     }
     // clear content before mounting

+ 0 - 1
packages/vue/package.json

@@ -13,7 +13,6 @@
   ],
   "buildOptions": {
     "name": "Vue",
-    "isRuntimeCompileBuild": true,
     "formats": [
       "esm-bundler",
       "esm-bundler-runtime",

+ 0 - 5
rollup.config.js

@@ -77,7 +77,6 @@ function createConfig(format, output, plugins = []) {
   const isRawESMBuild = format === 'esm'
   const isNodeBuild = format === 'cjs'
   const isBundlerESMBuild = /esm-bundler/.test(format)
-  const isRuntimeCompileBuild = packageOptions.isRuntimeCompileBuild
 
   if (isGlobalBuild) {
     output.name = packageOptions.name
@@ -132,7 +131,6 @@ function createConfig(format, output, plugins = []) {
         // isBrowserBuild?
         (isGlobalBuild || isRawESMBuild || isBundlerESMBuild) &&
           !packageOptions.enableNonBrowserBranches,
-        isRuntimeCompileBuild,
         isGlobalBuild,
         isNodeBuild
       ),
@@ -152,7 +150,6 @@ function createReplacePlugin(
   isProduction,
   isBundlerESMBuild,
   isBrowserBuild,
-  isRuntimeCompileBuild,
   isGlobalBuild,
   isNodeBuild
 ) {
@@ -170,8 +167,6 @@ function createReplacePlugin(
     __BROWSER__: isBrowserBuild,
     // is targeting bundlers?
     __BUNDLER__: isBundlerESMBuild,
-    // support compile in browser?
-    __RUNTIME_COMPILE__: isRuntimeCompileBuild,
     __GLOBAL__: isGlobalBuild,
     // is targeting Node (SSR)?
     __NODE_JS__: isNodeBuild,