随着现代前端开发的复杂度和规模越来越庞大,已经不能抛开工程化来独立开发了,如 react 的 jsx 代码必须编译后才能在浏览器中使用;又如 sass 和 less 的代码浏览器也是不支持的。 而如果摒弃了这些开发框架,那么开发的效率将大幅下降。在众多前端工程化工具中,webpack 脱颖而出成为了当今最流行的前端构建工具。 然而大多数的使用者都只是单纯的会使用,而并不知道其深层的原理。希望通过以下的面试题总结可以帮助大家温故知新、查缺补漏,知其然而又知其所以然。
more >>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
如何改变模块下的私有变量 ?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