前端模块化讲解与6种拷贝模式

94 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

前端模块化

模块化就是单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员.也可以依赖别的模块

浏览器模块化规范 AMD Require.js CMD Sea.js

服务器模块化规范 CommonJS module.exports

 

ES6 模块化定义规范

每个 js 文件都是一个独立模块

导入模块成员使用 import 关键字

暴露模块成员使用 export 关键字

 

webpack 前端项目构建工具

webpack-dev-server 自动打包 生成 bundle.js 默认看不见访问 /bundle.js

html-webpack-plugin 生成预览页面

plugins 数组是 webpack 打包期间会用到的插件列表

配置自动打包相关的参数

postCSS 自动添加 css 的兼容前缀

babel-loader 打包处理 js 文件中的高级语法

$nextTick()方法的作用

页面上元素被重新渲染之后,才会执行回调函数中的代码

 

es2017 新增字符串方法

padStart()方法,padEnd()方法

padStart(5, 'ab')用于头部补全

padEnd(5,'ab')用于尾部补全

 

lodash 模块

_.cloneDeep(this.addForm) 对象深拷贝 解决页面与逻辑冲突

_merge();合并两个对象

 

vue中项目优化策略

生成打包报告

启用 CDN

Element-UI 组件按需加载

路由懒加载

首页内容定制

 

vue 生成打包报告

vue-cli-server build --report

拷贝方式

直接赋值

  1. 基本数据类型的拷贝

2).Object.assign()方法

3).ES6中的扩展运算(...) let obj2 = {...obj1}

4).jquery中的.extend.extend **.extend(deep,target,object1,objectN)**

5).递归方式

6).JSON.parse(JSON.stringify()) 深拷贝

 

总结:

1.直接复制实现的是浅拷贝,只拷贝对象的基本类型的数据

2.使用JS原生的怄函数式递归方法是做复杂深拷贝的好方法,兼容性好

3.使用JSON的两种方法深拷贝中只能是对象中没有函数时才能使用