安装vue脚手架启动项目
1、nvm安装vue 当前nvm使用的node版本是v10.24.1
npm install -g @vue/cli
安装完成之后报错:
You are using Node v10.24.1, but this version of @vue/cli requires Node ^12.0.0 || >= 14.0.0.
Please upgrade your Node version.
显而易见,需要更新node版本,直接用nvm安装了新版本
nvm install v12.0.0
# 继续安装vue
npm install -g @vue/cli
然后就可以使用了,发现nvm安装不同的node版本 vue还得重新装。
安装后还显示了一个这个
││ New major version of npm available! 6.14.12 → 9.6.3 ││ Changelog: https://github.com/npm/cli/releases/tag/v9.6.3 ││ Run npm install -g npm to update!
让更新npm的,暂时没这个需要,不更新
2、创建一个vue项目
vue create ysdq-bms
选择Default ([Vue 2] babel, eslint)
后端🐶来学习前端,怎么简单怎么来,直接选默认的即可了。
3、 启动项目
$ cd ysdq-bms$ npm run serve
常见问题
npm --save和–save -dev的区别
npm --save和–save -dev的区别
npm install vue-router 等价 npm install vue-router --save
–save是默认的,例如 npm i jquery 和 npm i jquery --save 是等价的
–save是代表着项目上线时所依赖的包
–save-dev 代表着是项目打包或者开发时候需要的包,实际上线的时候所不依赖的
两者可以在package.json里面查看
关闭eslint
主要是用idea中有红色波浪线,点击左上角Intellij IDEA -Preference,搜索Eslint点击disable即可
项目中常用依赖
注意是vue2项目
# 安装路由
npm i vue-router@3.5.1
# 安装element-ui
npm i element-ui@2.15.13
# axios
npm i axios@0.24.0
# vuex
npm i vuex@3.6.2
vue2项目流程分析
main.js
整个项目的入口文件
执行npm run serve
会直接执行main,js文件。
验证方法:
main.js 其他全部注释,启动项目打开控制台看到执行了。
// import Vue from 'vue'
// import App from './App.vue'
// import ElementUI from "element-ui";
// import router from "./router/index.js";
//
// //设置为 false 以阻止 vue 在启动时生成生产提示。
// Vue.config.productionTip = false
// Vue.use(ElementUI);
//
// new Vue({
// render: h => h(App),
// router
// }).$mount('#app')
console.log(666);
分析main.js内容
// 引入Vue 这个是模块引入 实际引入的是一个js文件 在vue文件下package.json中的module属性即dist/vue.runtime.esm.js
import Vue from 'vue'
// 引入App组件 根组件
import App from './App.vue'
//设置为 false 以阻止 vue 在启动时生成生产提示。
Vue.config.productionTip = false
// 创建Vue实例对象 new Vue()--创建对象 -同时要传递参数 ,参数也是一个对象用{}里面是配置 即配置对象
//1、render: h => h(App) 将App组件放入容器中
new Vue({render: h => h(App),router
}).$mount('#app')
import Vue from ‘vue’
1、实际引入的是一个js文件 在vue文件下package.json中的module属性即dist/vue.runtime.esm.js
2、这个是一个残缺的js文件没有模版解析器
比如这个Vue里面不能解析模版
这里抛出一个疑问,挂载的到底是哪个容器上的app?
vue main.js中app绑定的是index.html还是App.vue中?
import Vue from 'vue'
new Vue({el:'#app',template:'<h1>HHHHHHH<h1/>'
})
而引入全部的js文件可以解析
import Vue from 'vue/dist/vue'
new Vue({el:"#app",template:"<h1>HHHH</h1>"
})
以上#app是挂载到public/index.html中的容器中的
3、引入残缺的vue如何挂载到容器上?
render是一个函数,Vue自动帮我们调用,而有一个参数是createElement函数,它能帮我们创建具体元素编写内容,通过打印到控制台看到是createElement 是function即函数
const vm = new Vue({// render: h => h(App)render(createElement){console.log(typeof createElement)}
});
# render就是配置内容的
const vm = new Vue({// render: h => h(App)render(createElement){// console.log(typeof createElement)return createElement('h1','asfasf')}
});
# render没有用到this 那么可以写成箭头函数
render:(createElement)=>{return createElement('h1','asfasf')
}
# 一个参数 括号可以去掉,里面只有一个语句,还可以去掉{}
render:createElement=>createElement('h1','asfasf')
# createElement 用h代替
render:h=>h('h1','asfasf');
# 最后用的是组件那么直接传入组件即可
render: h => h(App)
分析创建Vue对象
1、创建vue对象 同时用el挂载到app容器上
const vm = new Vue({el:"#app",render: h => h(App),
});
2、拿到Vue对象使用$mount(‘#app’)挂载
const vm = new Vue({render: h => h(App),router
});
vm.$mount('#app')
# 当然也可以这样简写
new Vue({render: h => h(App)
}).$mount('#app')