【vue-cli安装】runtime-compiler&runtime-only

本文详细介绍了Vue CLI在构建项目时如何选择使用runtime-compiler和runtime-only。runtime-compiler模式下,template会被编译成render函数,适合在.vue文件外使用template。而runtime-only模式则跳过编译过程,直接使用预编译后的render函数,提高性能,适用于只使用.vue文件的项目。总结来说,若需在外部使用template,则选择runtime-compiler;否则,runtime-only是更快、更轻量的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue-cli构建项目,可选择使用 runtime-compiler 或 runtime-only 
分别创建出两个项目,其唯一的区别在main.js中,vue实例是否使用template

1.runtime-compiler

原理:template -- ast  -- render -- Virtual Dom -- UI
1)内部将vue中的template模板解析成abstract syntax tree (ast)抽象语法树  

2)抽象语法树再编译成render函数

3)render函数内存中渲染形成虚拟dom树,
4)virtual dom渲染为浏览器UI    


2.runtime-only

原理:render -- Virtual Dom -- UI

跳过1)2)直接通过render函数渲染成一个虚拟dom树并渲染为UI

优点:更快,更轻量(轻了6kb左右)

说明: runtime-only 模式下,将template放在.vue 文件中,由开发时依赖vue-template-compiler在开发时已将.vue文件中的 template 解析成了 render 函数,所以最后生产出来运行的代码没有template(runtime-only 只能识别render函数,不识别template)

总结:开发中,需在.vue文件之外使用template,选择runtimecompiler;如果仅在.vue文件夹开发,可选择更快更轻量的runtimeonly

附:render函数

render函数中的参数h简写来源于hyper-script指生成HTML结构的script脚本,实际指createElement
render( createElement ){
   return createElement( 'xxx' )
}
1.普通用法
createElement( '标签名','标签属性','标签内容或子标签')
eg:
	createElement( 'h2', { id : 'hh' }, [ '我是h2元素' ])
 此方法会返回当前创建的对象,所以可以连续创建
 createElement(  'h2', 
	 			    {class:'hh'},
	                ['我是元素内容', 
	                   createElement('span',
	                                  {id:ss},
	                                   ['我是span元素内容']
	                                 )
	                ]
               )
2.定义组件-组件替换
const cpn = {
  template:'<div>{{message}}</div>,
  data(){
   return {
      message:'xxx'
  }
}
}
new Vue( {
el:'#app',
render:function(createElement){
  return. createElement(cpn)
}
}
)
 

当你在uni-app项目中使用Vue CLI并尝试引入uView组件库时,遇到`$u is not defined`错误通常是因为你在代码中尚未正确地导入或配置uView相关的依赖。以下是解决这个问题的步骤: 1. **安装uView**: 首先,你需要通过运行以下命令在项目安装uView组件库: ``` npm install uview-ui@latest --save ``` 或者如果你使用的是yarn,则使用: ``` yarn add uview-ui@latest ``` 2. **全局引入**: 在项目的`main.js`或者`index.js`文件中,添加uView的全局引入声明: ```javascript import { defineComponent } from 'vue'; import { UIVue } from '@dcloudio/uview-ui'; Vue.use(UIVue); ``` 3. **局部引入并使用**: 如果仅在部分组件中需要uView,记得在该组件内使用`import`导入,并使用它提供的插件,如`<u-nav>`、`<u-form>`等: ```javascript export default defineComponent({ components: { // 这里假设你有一个名为Nav的uView组件 Nav: () => import('@/components/Nav.vue'), }, setup() { return {}; } }); ``` 4. **检查是否生效**: 确保你在模板中正确引用了uView组件,并检查是否有拼写错误。例如: ```html <template> <u-nav></u-nav> <!-- 这里的'u-nav'应该是你实际引入组件的名称 --> </template> ``` 如果以上步骤都已完成,仍存在问题,可能是Webpack配置未正确处理uView的按需加载。你可以检查`vue.config.js`中的配置,特别是`runtimeCompiler`选项以及是否启用了uView的异步加载功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值