网站建设方案预算,什么是电商行业,微信商城软件开发,网站备案没通过前言
本笔记参考视频#xff0c;尚硅谷:BV1Zy4y1K7SH p61 - p95
简介
Vue 脚手架是 Vue 官方提供的标准化开发工具#xff0c;vue-cli使用步骤 如果下载缓慢请配置 npm 淘宝镜像#xff1a;npm config set registry http://registry.npm.taobao.org全局安装vue/cli#…前言
本笔记参考视频尚硅谷:BV1Zy4y1K7SH p61 - p95
简介
Vue 脚手架是 Vue 官方提供的标准化开发工具vue-cli使用步骤 如果下载缓慢请配置 npm 淘宝镜像npm config set registry http://registry.npm.taobao.org全局安装vue/clinpm install -g vue/cli切换到你要创建项目的目录然后使用命令创建项目vue create xxxx选择使用vue的版本启动项目npm run serve暂停项目CtrlC 目录结构
.文件目录
├── node_modules
├── public
│ ├── favicon.ico: 页签图标
│ └── index.html: 主页面
├── src
│ ├── assets: 存放静态资源
│ │ └── logo.png
│ │── component: 存放组件
│ │ └── HelloWorld.vue
│ │── App.vue: 汇总所有组件
│ └── main.js: 入口文件
├── .gitignore: git版本管制忽略的配置
├── babel.config.js: babel的配置文件
├── package.json: 应用包配置文件
├── README.md: 应用描述文件
└── package-lock.json: 包版本控制文件render 函数
关于不同版本的函数vue.js 与 vue.runtime.xxx.js的区别 vue.js 是完整版的 Vue包含核心功能模板解析器vue.runtime.xxx.js 是运行版的 Vue只包含核心功能没有模板解析器 因为 vue.runtime.xxx.js 没有模板解析器所以不能使用 template 配置项需要使用 render函数接收到的createElement 函数去指定具体内容
脚手架默认配置
Vue 脚手架隐藏了所有 webpack 相关的配置若想查看具体的 webpakc 配置请执行vue inspect output.jsvue.config.js 是一个可选的配置文件如果项目的和 package.json 同级的根目录中存在这个文件那么它会被 vue/cli-service 自动加载使用 vue.config.js 可以对脚手架进行个性化定制详见配置参考 | Vue CLI
ref属性
被用来给元素或子组件注册引用信息id的替代者应用在html标签上获取的是真实DOM元素应用在组件标签上获取的是组件实例对象vc使用方式 打标识 或 获取this.$refs.xxx
props配置项
功能让组件接收外部传过来的数据传递数据接收数据 第一种方式只接收props:[‘name’]第二种方式限制数据类型props:{name:String}第三种方式限制类型、限制必要性、指定默认值
props:{ name:{ type:String, //类型 required:true, //必要性 default:JOJO //默认值 }
}props是只读的Vue底层会监测你对props的修改如果进行了修改就会发出警告若业务需求确实需要修改那么请复制props的内容到data中一份然后去修改data中的数据
mixin配置项
功能可以把多个组件共用的配置提取成一个混入对象定义混入在另外的js文件中
//分别暴露
export const mixin1 { data(){....}, methods:{....} .... }
export const mixin2 { ...}使用混入 按需引入定义混入的js文件中暴露的混入全局混入Vue.mixin(xxx)局部混入mixins:[xxx] 组件和混入对象含有同名选项时这些选项将以恰当的方式进行“合并”在发生冲突时以组件优先。同名生命周期钩子将合并为一个数组因此都将被调用。另外混入对象的钩子将在组件自身钩子之前调用。
插件
功能用于增强Vue本质包含install方法的一个对象install的第一个参数是Vue第二个以后的参数是插件使用者传递的数据定义插件
plugin.install function (Vue, options) {// 1. 添加全局过滤器Vue.filter(....)// 2. 添加全局指令Vue.directive(....)// 3. 配置全局混入Vue.mixin(....)// 4. 添加实例方法Vue.prototype.$myMethod function () {...}Vue.prototype.$myProperty xxxx}scoped 样式
作用让样式在局部生效防止冲突写法style scopedscoped样式一般不会在App.vue中使用style还有个属性为lang可以设置为 less/scss默认CSS使用less需要先下载相关的loader如less-loader注意版本问题
todoList总结
nanoid库用npm安装用于生成唯一id组件化编码流程:
拆分静态组件组件要按照功能点拆分命名不要与html元素冲突实现动态组件考虑好数据的存放位置数据是一个组件在用还是一些组件在用 一个组件在用放在组件自身即可一些组件在用放在他们共同的父组件上状态提升 实现交互从绑定事件开始
props适用于 父组件 子组件 通信子组件 父组件 通信要求父组件先给子组件一个函数 使用v-model时要切记v-model绑定的值不能是props传过来的值因为props是不可以修改的props传过来的若是对象类型的值修改对象中的属性时Vue不会报错但不推荐这样做
浏览器本地存储
可以将用户信息存储到浏览器本地存储sessionStorage和localStorage前者有效期较短页面关闭就会丢失注意是页面不是浏览器会话所以使用较少后者不删不会消失sessionStorage和localStorage为全局变量都只能存字符串可以直接打印使用两者用法一样sessionStorage.setItem(“数据名字”,“值”)/getItem(“数据名字”)/removeItem(“数据名字”)/clear()
组件自定义事件 一种组件间通信的方式适用于子组件 父组件 使用场景A是父组件B是子组件B想给A传数据那么就要在A中给B绑定自定义事件事件的回调在A中 绑定自定义事件 第一种方式在父组件中Demo atguigu“test”/ 或 第二种方式在父组件中
Demo refdemo/
... mounted(){ this.$refs.demo.$on(atguigu,data) }若想让自定义事件只能触发一次可以使用once修饰符或$once方法触发自定义事件this.$emit(‘atguigu’,数据)解绑自定义事件this.$off(‘atguigu’)解绑多个传数组组件上也可以绑定原生DOM事件需要使用native修饰符注意通过this.refs.xxx.refs.xxx.refs.xxx.on(‘atguigu’,回调)绑定自定义事件时回调要么配置在methods中要么用箭头函数否则this指向会出问题
全局事件总线GlobalEventBus
一种组件间通信的方式适用于任意组件间通信安装全局事件总线
new Vue({...beforeCreate() {Vue.prototype.$bus this //安装全局事件总线$bus就是当前应用的vm},...
}) 使用事件总线接收数据A组件想接收数据则在A组件中给$bus绑定自定义事件事件的回调留在A组件自身
export default {methods(){demo(data){...}}...mounted() {this.$bus.$on(xxx,this.demo)}
}提供数据this.bus.bus.bus.emit(‘xxx’,data)最好在beforeDestroy钩子中用$off去解绑当前组件所用到的事件
消息订阅与发布pubsub
消息订阅与发布是一种组件间通信的方式适用于任意组件间通信使用步骤 安装pubsubnpm i pubsub-js引入import pubsub from ‘pubsub-js’ 接收数据A组件想接收数据则在A组件中订阅消息订阅的回调留在A组件自身
export default {
methods(){ demo(data){...} }
... mounted() { this.pid pubsub.subscribe(xxx,this.demo) } }最好在beforeDestroy钩子中使用pubsub.unsubscribe(pid)取消订阅提供数据pubsub.publish(xxx,data)
Vue封装的过渡与动画
作用在插入、更新或移除 DOM元素时在合适的时候给元素添加样式类名图示 准备好样式 元素进入的样式 v-enter进入的起点v-enter-active进入过程中v-enter-to进入的终点 元素离开的样式 v-leave离开的起点v-leave-active离开过程中v-leave-to离开的终点 使用包裹要过度的元素并配置name属性
transition namehello //将v-改成 hello-即可变为专属动画h1 v-showisShow你好啊/h1
/transition备注若有多个元素需要过度则需要使用且每个元素都要指定key值可以使用第三方动画库 animate.css先npm下载再import ‘animate.css’然后在transition标签中使用
transition-group appearnameanimate__animated animate__bounce //animate.css基础引入enter-active-classanimate__backInUp //动画名leave-active-classanimate__backOutUp //动画名