初始化 :vue create --default .
通过命令行可以指定预设presets
启动: npm run serve --scripts-prepend-node-path=auto
cli-plugin-bable
可以通过配置文件babel.config.js修改
vue-cli-service
使用命令 vue-cli-service lint
可以通过.eslintrc或者package.json的eslintConfig域配置
可以通过vue add eslint安装
package.json
npm的配置文件,记录了了依赖
Babel
一个js编译器,实现语法转换等
webpackage
一个打包工具,
vue.config.js 可以配置vue项目
https://github.com/vuejs/vue-cli/tree/dev/docs/config
指定打包后的输出目录
保存时是否使用eslint-loader 来格式化
webpack配置
vue-loader的配置
css-loader的配置
webpack dev server相关的配置,例如端口等
...
主要是:@vue/cli-service 依赖 webpack
配置一个vue3.0项目
https://blog.csdn.net/moonbc/article/details/89549154
npm run serve
npm run build
npm run lint
入门文档: https://www.webpackjs.com/guides/
npm init -y
npm install webpack webpack-cli --save-dev
注意修改package.json 增加+ "private": true,,以免意外发布代码
配置文件是webpack.config.js
配置文件中可以指明enrty,和输出文件的名称(一般进入点称为main.js,输出称为bundle.js)
指定dist的路径
一般默认在package.js中指定"build": "webpack",这样npm run build就可以了
传统不使用打包工具的话,存在如下问题:
不能直观看出依赖关系
脚本引入的顺序有要求,容易出错
可能导致浏览器下载无用代码
分出/src目录和/dist目录
安装包,只需要使用
npm install --save name
npm install --save-dev name
模块化后,使用import...from导入,这样明确依赖关系
不需要再index.html中增加一堆的<script>标签引入依赖,只需要引入根上的一个js即可
这个js就是打包的结果,一般命名为main.js
另外除了打包,webpack还会对代码进行压缩,使用loader系统进行转义处理,比如babel
可以加载css loader
npm install --save-dev style-loader css-loader
这样在webpack.config.js中会多出一个rules。
其中指定了对哪些文件(正则匹配文件名)使用哪些loader,比如这里使用style-loader和css-loader
在main.js中指定import相应的css文件,然后就会加到最后的bundle.js中
加载图片
npm install --save-dev file-loader
使用import Icon from './icon.png';导入图片,这个Icon实际是一个转化后的url
file-loader 和 url-loader 可以接收并加载任何文件,包括字体(使用@font-face导入)
还有 csv-loader 和 xml-loader ,直接得到解析好的json
当前目录自动推导入口文件——入口可以是 main.js、index.js、App.vue 或 app.vue 中的一个
1.解决回调地狱(Callback Hell)问题,使得多层嵌套回调变的扁平,称为类似链式调用的形式 不断的调用promise对象的then方法来完成回调的嵌套(前一个方法要返回需要回调的函数)
- 方便在上述场景下捕获异常
1.html元素设置100%
2.高度使用vh单位
通过组合组件来组成应用程序,当你要把 Vue Router 添加进来,我们需要做的是, 0.导入Vue和Vue Router,使用Vue.use(VueRouter) 1.将组件 (components) 映射到路由 (routes) 2.告诉 Vue Router 在哪里渲染它们。
创建一个Router实例,然后作为选项对象的属性传入根Vue 创建Router实例时,需要传入一个路由配置数组,有path和component
支持任何js表达式,不论是指令中还是Mustache语法中。但是这是一个沙盒环境,不能访问外部的全局变量,除了白名单中的Date和Math。
v-html,不能复合使用模板
v-once
v-bind ===> :
v-on ===> @
v-if
HTML语法对指令的影响:HTML要求attr的名称不区分大小写,而且不能有字符:比如空格和引号
属性名称应该使用小写,属性值永远加引号(双引号或者单引号)(所以自定义的bind应该返回字符串)
动态指令,可以使用v-bind:[attributeName]="url"
的语法动态改变指令,attributeName也应该是一个js表达式,但值必须是字符串或null
指令修饰符
指令后可以增加修饰符,例如v-on:submit.prevent="onSubmit"
prevent
数据监听(响应式的数据) 事件监听 自定义事件和自己触发事件 $emit('事件名',抛出值) 事件可以携带抛出值 双向绑定 v-module = v-bind + v-on bind的是value属性,on的是input事件,事件处理是把value设置为事件抛出值
动态组件 + is 缓存失活的组件 异步组件 插槽和内容分发 如果自定义组件没有包含一个 元素,则该组件起始标签和结束标签之间的任何内容都会被抛弃。 因为Vue不知道该把内容放到解析后模板的哪里
$data, vm代理 $props,vm代理 $el $options $parent 父实例,可能没有 $root 根实例,可能是自己 $children $slots $ref
index的Store初始化的时候会生成一个docList实例,实例初始化的时候会请求mate信息。这应该对应目录的第一页。 {start: "/doc0", length: 10}
DocList初始化的时候也能指定一些init,但是现在是空的。 因此初始状态,DocList是空的, docsUpdate = flase, total=0
目前一开始获取全部的mate
有些代码放到mounted,有些放到组件内路由,有些放到利己之心的watcher中