一直在使用 react ,但是对 vue 一直有一定的兴趣,所以记录一下自己学习 vue 的一些过程。
安装
对 Vue 还不是很理解,所以先安装一下吧:
1 | # 最新稳定版 |
然后我看到官网上提供了 vue 的一个脚手架 vue-cli
安装 vue-cli
1 | $ npm install -g @vue/cli |
创建一个新项目
我的思路是先对 vue 有一个大概的了解之后再去看详细的细节,所以我选择先使用 vue-cli 脚手架搭建一个小项目,便于自己了解 vue。
1 | $ vue create api-vue |
中间会有很多安装项目,我就先全部使用默认的添加项了。但是这块应该在 windows 和 mac 上会有所差别,可能在 windows 上有问题,具体提示查看 vue-cli 创建项目
比较让我惊喜的是 vue-cli 提供了一个图形界面用于管理项目(虽然目前不知道这个东西怎么用):
1 | $ vue ui |
查看 package.json 文件发现有对应的指令:
1 | $ yarn serve // 启动项目 |
然后打开 http://129.0.0.1:8080 就可以看到初始化的项目了。
添加路由
安装官方提供的 vue-router
, 具体怎么使用可以查看 vue-router 官方文档
我就简单记录一下我在使用过程中遇到的问题和解决步骤,
1 | $ npm install vue-router |
简单说一下 vue-router 的功能:(官网上粘出来的)
- 嵌套的路由/视图表
- 模块化的、基于组件的路由配置
- 路由参数、查询、通配符
- 基于 Vue.js 过渡系统的视图过渡效果
- 细粒度的导航控制
- 带有自动激活的 CSS class 的链接
- HTML5 历史模式或 hash 模式,在 IE9 中自动降级
- 自定义的滚动条行为
我按照官网上配置出来之后的结果就是:
1 | // index.html |
问题:
1. 运行结果会报错:
1 | You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build. |
问题产生原因:
通过 import Vue from 'vue'
导入的是 vue.common.js
, 而 vue-router 内部导入使用的是 vue.js
,在 node_modules/vue/package.json 中的 main 字段是:"main": "dist/vue.runtime.common.js",
,瞬间恍然大悟,他默认导出的是 "dist/vue.runtime.common.js"
不是 vue.js
。
解决方案:
我把项目中的 import Vue from 'vue'
改为:import Vue from 'vue/dist/vue'
, 特别开心的是不报错了,但是就是没有出来内容,页面是空白一片。
2. 页面空白
我纠结了半天想着,这样路由是定义好了,但是具体每个页面对应的每个模块要渲染的位置我并没有指定,所以我觉的页面空白一片是正常现象,所以我就看是看 router-view
的用法,查看了 vue-router GitHub 的 base 例子,
解决方案:
于是我给我的代码添加了 Vue.use(VueRouter); 和 new Vue({..., template: ...})
具体代码如下:
1 | import Vue from "vue/dist/vue"; |
再次运行,开心,页面终于出来了,而且路由页正常的运行。。。。😁 😁 😁 😁 😁 😁
以上遇到的问中有提到 vue.common.js 和 vue.js,他俩之间的区别是:
Vue 最后会打包三个文件:runtime only 文件 vue.common.js(运行时),一个是 compiler only 的文件 compiler.js(编译器),一个是 runtime + compiler 的 vue.js(完整版),他们就是官网术语所说的运行时、编译器和完整版
我们如果要用到 template 就要用到 compiler.js,所以我们引入 vue.js 是最好的。