高级前端-Vue组件世界

news/2024/7/10 0:29:01 标签: vue, javascript, 高级前端

1. 自定义指令

2. 数据双向绑定::value + @input

v-model作用于表单元素

自定义组件使用v-model之后,父组件不用再监听子组件的事件触发

.sync语法糖

3. 组件通信

1. 跨层级访问:$emit,组件过多时会很麻烦,vue提供了$root和$parent两个属性(强耦合),访问组件根节点和父节点,父组件通过ref访问子组件

2. 依赖注入:父组件provide对应属性,子组件通过injected去使用provide提供的数据,injected的内部通过$parent往父节点找对应的属性,所以依然还是强耦合

3. 组件二次封装:修改第三方库样式的时候,使用>>>,就可以了,不用再单独开一个style

这是一个对element input的组件的二次封装,vue提供了$attrs和$listeners,方便开发二次封装,这样就不用单独去实现自定义组件的v-model,还有el-input对应的各个方法

4. vue插件

Mixins: 生命周期钩子函数在组件的钩子函数之前执行,methods如果有重名的,使用组件中的method

插件:Vue.use(plugin)

5. vue代码的复用方案:

1. Mixin

2. HOC Hihger order component 函数接收组件作为参数,并返回一个新的组件

3. RenderLess组件

javascript">// 带插槽的父组件 SearchWrapper.vue
<slot name="searchContent" :data="advanced" />

// 子组件中使用父组件的数据
<search-wrapper @search="searchWarehouseAreaList" @reset="resetForm">
        <a-form-model ref="searchForm"
          :labelCol="{ span: 5 }"
          :wrapperCol="{ span: 18, offset: 1 }"
          :model="searchModel"
          layout="horizontal"
          slot="searchContent"
          slot-scope="scopeData"> // 这里的scopeData.data指向父组件的:data,也就是advanced


http://www.niftyadmin.cn/n/861116.html

相关文章

高级前端-Vue源码分析

1. Vue的响应式原理 let nextTick (cb) > Promise.resolve().then(cb) let flushJobs [] function queueJob(dep) {flushJobs.push(dep)// 微任务&#xff0c;最后执行&#xff0c;真正执行数据操作函数nextTick(flushJobs) } function flushJobs(job) {// 拿出队列中的所…

高级前端-vue的主流插件

1. Vuex Mutations是修改数据的唯一方法 2. Vue Router hash history

高级前端-Babel

Babel是什么&#xff1f;是个编译器&#xff0c;把高版本js代码变成低版本js代码 编译过程&#xff0c;把原代码通过词法分析变成一个个token&#xff0c;举例&#xff1a;ab则拆成了a,,b三个token 语法分析器把这些token根据对应的语法生成抽象语法&#x1f332; 语义分析器…

高级前端-webpack

什么是webpack&#xff1a;webpack is a module bundler Tapable是webpack的底层依赖 loader让webpack可以处理除了js和json文件以外的别的类型的文件 module.rules.{use: , test: } 目前用的是chainWebpack可以链式调用loader和plugin&#xff0c;并且可以修改对应loader或者插…

高级前端-axios

Axios源码分析 简单源码实现参考&#xff1a;https://jframesea.coding.net/public/interview/Interview/git/files/master/javascript/axios.js 请求API化 1. api不要出现在视图层&#xff0c;不然的话修改起来会很麻烦 2. 建立一个api目录&#xff0c;然后根据业务模块划分ap…

高级前端-页面性能优化

JS和CSS的压缩与混乱 1. 无效字符删除 2. 剔除注释 3. 代码语义缩减和优化 4. 代码优化&#xff08;代码不易看懂&#xff09; 图片相关优化 雪碧图svg > webp > png > jpg图片压缩inline-image浏览器对同一个域名的并发加载数量有限制&#xff0c;所以通常静态资源需…

POST请求数据过大,nginx服务器报500的问题

参考&#xff1a;https://blog.csdn.net/feifeixiang2835/article/details/84964036 把对应nginx里面的client_body_buffer_size值调大即可

vscode + js 跨文件go to definition

You need to create a jsconfig.json file at the root of your project. {"compilerOptions": {"target": "ES6"},"exclude": ["node_modules","**/node_modules/*"] }