渐进式–JavaScript 框架
总结:
小而美(灵活的语法,灵活的开发方式)=> 小但是很好用
丰富的生态(模块、插件、开发团队、开发资料) =>资料很多
广泛的应用(移动端、pc端)=>跨平台
查看github star的排名:
github搜索:star:>1
vue排名第三!
nvm(node version manager):
github搜nvm=>地址:https://github.com/nvm-sh/nvm
安装nvm:https://www.jianshu.com/p/14f98f4a5667
https://www.cnblogs.com/cllgeek/p/6076280.html
查看当前node版本:
node -v/--version
查看本地所有的node的版本:
nvm ls
带箭头的,是当前使用的版本!
查看node官网有什么版本:(可以供使用的)
nvm ls-remote // 很多个版本,查看版本号,可以安装某个版本
安装某个版本:
nvm install v11.0.0 // 安装这个版本,并切换到这个版本
切换 到某个版本:
nvm use v8.12.0 // 切换到v8上
vue在chrome的插件:vue.js devtools
安装:https://chrome-extension-downloader.com/
ID:nhdogjmejiglipccpnnnanhbledajbpd
下载完成后,在chrome的(…/更多工具/)扩展程序中,拖入这个下载
http:
vue-resource(官方不推荐使用了,但是还是很好用)
推荐:axios
ide,npm(nvm,cnpm,cli),chrome插件(dev-tools)
模板语法
计算属性
指令:条件渲染,列表渲染,事件处理,表单,class和style,
生命周期钩子
基础:生命周期钩子
通讯:props,$parent,emit event,vuex
路由:vue-router
http:vue-resource,axios
动画
vue.use
props
DOM:el,template,render
服务端渲染
打包编译
第一个应用:
bootcdn
vue中el绑定的时候,如果是class,只会把数据绑定到第一个class上,第二个就忽略掉了,所以通常用ID!
插值,表达式,v-html,v-bind(属性绑定)
baidu
:href
v-on:click="submit()"
@click
计算属性:computed
侦听器:watch
注:这两个跟data和methods是平级的!
data:{
msg:'hello vue',
},
watch:{
msg:function(n,o){
console.log(n,o);
}
}
data:{
msg:'hello vue',
anthor:'anthor hello vue'
},
watch:{
msg:function(n,o){
console.log(n,o);
}
},
computed:{
msg1:function(){
return this.msg+this.anthor;
}
}
控制台软换行:shift+回车
(直接回车的话,就执行语句了,所以用软换行)
v-if,v-show,v-for,
v-for=“item of list”
woshi div的内容
注:跟angular一样的,是对象格式!!!!
第二个div
// data的数据:
classStyle:{
color:'yellow',
fontSize:'30px',
}
class也是与angular相同的!
我是第三个div
disige div
注:这种混合class,注意数组里面是对象!
@vue/cli 3.x:
第一种方法:
vue create hello-world
手动选择:
上下键调整选项,空格确定是否选中,回车是确认(跳到下一步)!
eslint的时候:保存的时候检查还是提交代码的时候才检查!=>选save的时候就行
preset的时候:
如果选择是,那么以后default的项目,会默认按照这个选项生成项目!=>no就行
第二种方法:
vue ui
首选选择的时候,最后一项:使用配置文件(选中)=>
将插件的配置保存在各自的配置文件中eg:.babelrc。
完成后:页面:
tab:插件,依赖,配置,任务
插件:@vue/cli-service,@vue/cli-plugin-babel,@vue/cli-plugin-eslint
依赖:运行依赖和开发依赖!
运行:core-js,vue,vue-router,vuex
开发:babel-eslint,eslint,node-sass,saas-loader等等
配置:Vue CLI(配置vue项目),ESLint configuration(代码质量和纠错)
任务:
serve(编译并热跟新,用于开发),build(编译并压缩,用于生产),lint(检查并修复源文件),inspect(检查webpack配置)
ui界面也是可以启动项目的!
main.js中:
实例Vue,并引入router和store:
router=》路由
store=》vuex
最后绑定到#app上!
我们关心的文件:
public,src,package.json
组件:=》由繁化简!
独立,可复用,整体化
组件的原则:
控制在300行代码以内!
常用的代码!
组件带来的问题:
组件状态管理(vuex)
多组件的混合使用,多页面,复杂业务(vue-router)
组件间传参、消息、事件管理(props、emit/on、bus)
风格指南:
官网=》学习=》风格指南!
新建组件info:
webstorm新建的时候,新建vueComponent:
router.js:
route level code-splitting;路由级代码拆分
this generates a separate chunk (about.[hash].js) for this route:这将为此路由生成一个单独的块(about.[hash].js)。==>about的路由
which is lazy-loaded when the route is visited.当路线被访问时,它被延迟加载。
vuex的需求:
vuex功能:
为vuejs开发的状态管理模式
组件状态集中管理
组件状态改变遵循统一的规则
store.js:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
}
})
注:
state:是状态集中管理的地方!
mutations:是唯一改变状态state的方法集!
@符号:代表src目录!
store.js:
Vue.use(Vuex)
export default new Vuex.Store({
state: {
count:0,
},
mutations: {
increase(){
this.state.count++;
}
},
actions: {
}
})
info.vue:触发事件页面:
import store from '@/store';
export default {
name: "Info",
store,
methods: {
add() {
console.log("add事件执行了");
store.commit('increase');
}
}
}
about.vue:接受页面:
import store from '@/store';
export default {
name:'About',
store,
data(){
return{
msg:store.state.count,
}
}
}
demo1当前行高亮,单击可以添加的例子(逻辑严谨性的问题)
- {
{item}}
sources里面:压缩的css可以格式化的!!! Line1,Column 1前面的 { }
demo2:
vue ui // 按步骤创建项目
创建组件:login,list,user,add,home(每个组件有自己简单的html)(home里面有路由list和user)
删除home,about和hello world组件
每个.vue页面中,只能有一个根div!否则报错的!
Component template should contain exactly one root element.
If you are using v-if on multiple elements, use v-else-if to chain them instead.
路由:
或者:
新闻列表
个人中心
js中:
this.$router.push('/home/list')
add页面添加数据,那么在list展示,用到了vuex: