You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
警告错误 [Vue warn]: You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
在解释这些之前,我们先搞清楚明白,组件 component 与 根实例 new Vue() 的关系:
//根实例挂载
const vm = new Vue({
//virtul Dom 方案渲染模版
render: h => h(APP)
//render: (createElement) => {
// return createElement(APP)
//}
}).$mount('#app')
createElement 函数中生成模板:
createElement(
// {String | Object | Function}
// 一个 HTML 标签,组件选项,或一个函数
// 必须 Return 上述其中一个
'div',
// {String | Array}
// Children VNodes, built using `createElement()`,
// or simply using strings to get 'text VNodes'. Optional.
[
'Some text comes first.',
createElement('h1', 'A headline'),
createElement(MyComponent, {
props: {
someProp: 'foobar'
}
})
]
)
从 Vue 升级到2.0之后,多了采用jsx方式渲染生成HTML模版,还有一种就是一直沿用的 template 字符串拼接方式生成模版,但其实隐含的还有
直接去挂载手动写入模版
,Vue 的功能很强大多种方式有时也让我们感到到很😅Vue2.0 生成 HTML 方式:
注意:
对于挂载实例 不是采用 render 方式拼接模版,webpack 打包 vue 会报错,主要是由于webpack选择 vue 版本问题,详见 https://github.com/vuejs-templates/webpack/issues/215,[2.0 Changes #2873](vuejs/vue#2873)警告错误 [Vue warn]: You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
在解释这些之前,我们先搞清楚明白,组件 component 与 根实例 new Vue() 的关系:
创建 Vue 的根实例
一个 Vue 实例其实正是一个 MVVM 模式中所描述的 ViewModel - 因此在文档中经常会使用 vm 这个变量名。
在实例化 Vue 时,需要传入一个
选项对象
,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。创建 component 组件
可以扩展 Vue 构造器,从而用预定义选项创建可复用的
组件构造器
(这个是官方说法,比较绕口),其实说白了,组件可以理解为继承于 Vue 构造器,与跟实例 vm 存在细微的差别对数据指针data更改。注册 component 组件
组件全局注册
注意:
对于统一性、共用性组件,建议采用组件全局注册方式,如<ant-img src = "" v-on:error="_errorReport()" v-on:load="_loadReport"></ant-img>
替代image
标签进行统一上报处理。组件局部注册
有了以上知识之后,基本对vue的实例,组件思路有了整理的了解,那接下来理解 Vue2.0 生成 HTML 方式。
render 函数jsx方式渲染生成HTML模版
字符串模板的代替方案,允许你发挥 JavaScript 最大的编程能力。render 函数接收一个
createElement
方法作为第一个参数用来创建VNode
。createElement
函数中生成模板:template 字符串拼接方式生成模版
采用自定义标签,内嵌到 Vue 根实例挂载点获取模版
index.html
app.js
ps:
注意,自定义标签的这种模版方式不推荐使用,影响html语义化。总结,通过以上的例子,我们理清了,组件与
Vue
根实例的关系, 以及挂载点,生成 html 的方式,最后更好的扩展优化可以深入做vue组件直出方案 prerender-spa-plugin 做简单直出。参考资料:
官方 Vue.js 教程
极客 Vue.js 教程
Vue 组件 data 为什么必须是函数?
The text was updated successfully, but these errors were encountered: