commonJS
- 特点:
1、模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
2、模块加载会阻塞接下来代码的执行,需要等到模块加载完成才能继续执行——同步加载。
- 环境:服务器环境
- 应用:nodejs 的模块规范是参照 commonJS 实现的。
- 语法:
more >>1、导入:require(‘路径’)
2、导出:module.exports 和 exports
1、模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
2、模块加载会阻塞接下来代码的执行,需要等到模块加载完成才能继续执行——同步加载。
more >>1、导入:require(‘路径’)
2、导出:module.exports 和 exports
特点:无连接
、无状态
、灵活
、简单快速
是优点也是缺点
Content-Type
标记,可以传输任意数据类型的数据对象(文本、图片、视频等等),非常灵活首先了解一下浏览器的渲染原理《How Browsers Work》译文由于最近在探索框架性能,各框架的正确使用场景,对框架的数据绑定原理做了如下的总结:
1、Angular
Angular 的数据观测采用的是脏检查(dirty checking)机制。每一个指令都会有一个对应的用来观测数据的对象,叫做 watcher;一个作用域中会有很多个 watcher。每当界面需要更新时,Angular 会遍历当前作用域里的所有 watcher,对它们一一求值,然后和之前保存的旧值进行比较。如果求值的结果变化了,就触发对应的更新,这个过程叫做 digest cycle。
脏检查有两个问题:
轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 kb;
简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;
双向数据绑定:保留了 angular 的特点,在数据操作方面更为简单;
组件化:保留了 react 的优点,实现了 html 的封装和重用,在构建单页面应用方面有着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
虚拟 DOM:dom 操作是非常耗费性能的, 不再使用原生的 dom 操作节点,极大解放 dom 操作,但具体操作的还是 dom 不过是换了另一种方式;
运行速度更快:相比较与 react 而言,同样是操作虚拟 dom,就性能而言,vue 存在很大的优势。
今天我们来深度分析一下 Commonjs
和 Es Module
,希望通过本文的学习,能够让大家彻底明白 Commonjs
和 Es Module
原理,能够一次性搞定面试中遇到的大部分有关 Commonjs
和 Es Module
的问题。
老规矩我们带上疑问开始今天的分析 🤔🤔🤔:
Commonjs
和 Es Module
有什么区别 ?Commonjs
如何解决的循环引用问题 ?exports
,为何又出了 module.exports
? 既生瑜,何生亮 ?require
模块查找机制 ?Es Module
如何解决循环引用问题 ?exports = {}
这种写法为何无效 ?import()
的动态引入 ?Es Module
如何改变模块下的私有变量 ?(.+)默认是贪婪匹配
(.+?)为惰性匹配
疑问号让.+的搜索模式从贪婪模式变成惰性模式。
var str = 'aaa<div style="font-color:red;">123456</div>bbb'
<.+?>
会匹配<div style="font-color:red;">
<.+>
会匹配<div style="font-color:red;">123456</div>
要在浏览器测试结果的话,输入:
|
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true