当前位置: 首页 > news >正文

网站建设套餐报价方案wordpress lophita

网站建设套餐报价方案,wordpress lophita,2017年网站开发用什么语言,怎么做国内网站文章目录前端模块化省流#xff1a;chatGPT 总结一、参考资料二、发展历史1.无模块化引出的问题:横向拓展2.IIFE3.Commonjs(cjs)4.AMD引出的问题#xff1a;5.CMD6.UMD7.ESM往期精彩文章前端模块化 省流#xff1a;chatGPT 总结 该文章主要讲述了前端模块化的发展历史和各个… 文章目录前端模块化省流chatGPT 总结一、参考资料二、发展历史1.无模块化引出的问题:横向拓展2.IIFE3.Commonjs(cjs)4.AMD引出的问题5.CMD6.UMD7.ESM往期精彩文章前端模块化 省流chatGPT 总结 该文章主要讲述了前端模块化的发展历史和各个阶段的技术方案包括无模块化IIFE、CommonJS、AMD、CMD、ESModule、UMD。 其中无模块化时期的文件拆分是最基础的模块化但也存在函数命名冲突的问题 IIFE 是现代模块化的基石利用函数的块级作用域进行隔离可以控制作用域 CommonJS 文件即模块模块加载同步适用于服务器端 node浏览器端使用 webpack 或 browserfy。 最后各种模块化技术方案都是为了更好地满足前端代码管理、组织、通信的需求模块已经成为了代码管理/编译、业务分离的基本单元。 一、参考资料 es-module-history网页性能管理详解defer 和 async 的区别可能是最详细的 UMD 模块入门指南在浏览器中使用 ECMAScript Modules 二、发展历史 js 的设计之初就是为了满足简单的页面设计表单提交并无模块化 or 命名空间的概念而是实实在在的需求推进了所有技术的演进模块化也是。站在前端发展的上帝视角来看随着前端的能力在纵深都得到增强之后迫切的需要更好的代码管理、组织、通信的模式各种模块化的技术方案开始出现。现如今模块已经成为了代码管理/编译业务分离的基本单元。 总的发展历史 无模块化(IIFE) - CommonJS - AMD - CMD - ESModule、UMD 1.无模块化 需求: 开始需要在页面中加载不同的 js动画、组件、格式化多种 js 分布在不同的文件中不同的文件又被同一个模块中引用 文件拆分是最基础的模块化 script srcjq.js/script script srcmain.js/script script srcdep1.js/script // ...问题这个时期函数命名可能会冲突影响到其他人写的代码 引出的问题: script 标签的参数 - async defer 的区别 总结 主要是对标签下载和执行时机的控制 普通标签 - 遇到标签就去下载下载完毕之后立刻去解析代码并执行这个时候会阻塞 GUI 线程渲染defer - 遇到标签之后异步下载下载完成之后等待其他标签解析完成之后开始执行在主线程解析完成之后才执行降低脚本的优先级保持用户体验使用相对较多async - 遇到标签之后异步下载下载完成之后立即执行并阻塞渲染执行完成之后继续渲染异步下载结束之后立即执行不保证脚本执行顺序一般用来给那些不需要任何依赖的脚本使用拓展ESM 默认是通过 defer 的方式加载的所以是不需要在 script 标签上加 defer 属性的 横向拓展 兼容性如何 IE9引导内容 浏览器渲染原理同步异步的原理Promise任务队列模块化加载原理 产生的问题 污染全局作用域 不利于大型项目的开发以及多人团队的共建 2.IIFE IIFE 主要是开始对作用域的把控 利用函数的块级作用域进行隔离 可以说 IIFE 是现代模块化的基石 (function ($) {console.log($);return {data: [],}; })(jQuery); //注入对象3.Commonjs(cjs) 服务器端 node浏览器端 webpack|browserfy文件即模块 模块加载同步服务器模块加载是运行时同步加载浏览器模块加载是提前编译打包处理 exports module.exports 注意不能直接给 exports 赋值会导致与 module 断开引用使用 require 进行引入 缓存 cjs 在引用文件的时候会将文件执行一遍然后将结果通过浅拷贝的方式写入全局缓存中后续再次 require 同一个文件时直接从缓存中读取不会重新执行模块文件 // a.js var name morrain; var age 18; exports.name name; exports.getAge function () {return age; }; // b.js var a require(a.js); console.log(a.name); // morrain a.name rename; var b require(a.js); console.log(b.name); // rename模块输出的结果是值的拷贝一但输出模块内部变化后无法影响之前的引用而ESModule 是引用拷贝 // a.js var name morrain; var age 18; exports.name name; exports.age age; exports.setAge function (a) {age a; }; // b.js var a require(a.js); console.log(a.age); // 18 a.setAge(19); console.log(a.age); // 18cjs 在运行时加载ESM 是编译时加载缺点不支持异步 cjs 更偏向于服务端因为服务端 I/O 能力强所以 CMJ 是同步的方法ESM 时机遇编译时的所以支持异步能力 4.AMD AMD(Asynchronous module definition)异步的模块定义 解决了 Commonjs 不支持异步的缺点可以在浏览器端运行 经典代表require.js 使用方法 // define来定义模块 define(id, [depends], callback); // require进行加载 require([module], callback);示例 //提前加载执行顺序 // RequireJS define(a, function () {console.log(a load);return {run: function () {console.log(a run);},}; });define(b, function () {console.log(b load);return {run: function () {console.log(b run);},}; });require([a, b], function (a, b) {console.log(main run); // a.run();b.run(); });// a load // b load // main run // a run // b run缺点 在代码运行时会先递归的找出所有的依赖然后将依赖放到前面加载如果依赖过多项目可能会变慢引入成本升高 引出的问题 如果现在 AMD 中兼容 CJS 的代码怎么办 define(amdModule, [], (require) {const dep1 require(./dep1);const dep2 require(./dep2);// 业务逻辑…… });5.CMD CMD(Common Module Definition-通用模块定义)推崇依赖后置也就是按需执行 CMD 解决了 AMD依赖前置导致的引入成本过高的问题 整合了 CJS 和 AMD 的特点浏览器端运行 经典代表Sea.js // 引入require var fs require(fs); //同步 require.async(./module3, function (m3) {}); //异步// sea.js按需引入 define(a, function (require, exports, module) {console.log(a load);exports.run function () {console.log(a run);}; });define(b, function (require, exports, module) {console.log(b load);exports.run function () {console.log(b run);}; });define(main, function (require, exports, module) {console.log(main run);var a require(a);a.run();var b require(b);b.run(); });seajs.use(main);// main run // a load // a run // b load // b run缺点 依赖打包加载逻辑存在于每个模块中扩大了模块体积同时功能上依赖编译 6.UMD UMD (Universal Module Definition)就是一种通用模块定义规范让你的模块能在所有运行环境中使用如CommonJS, AMD, CMD (function (root, factory) {if (typeof module object typeof module.exports object) {console.log(是commonjs模块规范nodejs环境);module.exports factory();} else if (typeof define function define.amd) {console.log(是AMD模块规范如require.js);define(factory);} else if (typeof define function define.cmd) {console.log(是CMD模块规范如sea.js);define(function (require, exports, module) {module.exports factory();});} else {console.log(没有模块环境直接挂载在全局对象上);root.umdModule factory();} })(this, function () {return {name: 我是一个umd模块,}; });7.ESM ESModule 是伴随着 ES6 推出的原生模块化解决方案 import 输入、export 输出 支持异步加载编译时加载支持静态分析更好的支持chunk和tree shaking支持动态导入按需加载import().then()支持import.meta获取模块元数据 往期精彩文章 leetcode-js刷题记录数据结构docker下YApi部署教程-支持swagger数据导入带你深入理解什么叫js闭包使用Object.defineProperty进行数据劫持,实现响应式原理-剖析vue2.0前端性能优化之rel“prefetch“预/懒加载功能前端唤起相机的方法H5JS
http://www.w-s-a.com/news/424398/

相关文章:

  • 用电脑做服务器制作网站东莞营销网站建设
  • 网站需要怎么做wordpress 重装
  • 做电影网站赚钱的方法世界500强企业排名2023
  • 领卷网站怎么做的西宁设计网站建设
  • 东莞网站建设价位软件开发税率是13%还是6
  • 企业网站建设一条龙如何在网上推广自己
  • 成品网站制作公司企梦网站建设
  • 网站开发微信授权登录ftp 如何 更新 wordpress
  • icp备案和网站不符查询公司的网站备案
  • 万江营销型网站建设泰安网站建设制作电话号码
  • 做网站是用ps还是ai服饰东莞网站建设
  • 只做一页的网站多少钱网站开发就业趋势
  • 陈村网站建设有哪些网站可以做店面设计
  • 查询网站注册信息wordpress 照片墙
  • 成都网站设计服务商室内设计设计师网站推荐
  • 企业建站系统cms百度网址ip
  • wordpress 代码编辑插件下载搜索引擎优化seo课程总结
  • 韩都衣舍网站建设的改进邯郸公众号小程序制作
  • 上海设计网站建设在线视频制作
  • 东营高端网站建设新建网站如何让百度收录
  • wordpress怎么生成网站地图微网站平台怎样做网站
  • 同安区建设局网站招投标公众号简介有趣的文案
  • 江苏州 网站制作网上宣传方法有哪些
  • 做网站时怎样申请域名郑州制作网站公司
  • 深圳 网站开发公司电话网站关键词快排名
  • 网站建设的工作总结seo同行网站
  • 网站需要兼容哪些浏览器sql数据库做的网站怎么发布
  • 营销型网站的建站步骤是什么意思广州门户网站建设公司
  • 汕尾好网站建设推广计算机软件包含网站开发
  • 建设工程施工许可证在哪个网站办wordpress更换主题白屏