commonjs

优化 Webpack 的构建速度

你离开我真会死。 提交于 2020-08-10 08:12:26
1、使用 高版本 的 Webpack 和 Node.js 2、 多进程/多实例构建 :HappyPack(不维护了)、thread-loader 3、压缩代码 webpack-paralle-uglify-plugin uglifyjs-webpack-plugin 开启 parallel 参数 (不支持ES6) terser-webpack-plugin 开启 parallel 参数 多进程并行压缩 通过 mini-css-extract-plugin 提取 Chunk 中的 CSS 代码到单独文件,通过 css-loader 的 minimize 选项开启 cssnano 压缩 CSS。 4、 图片压缩 使用基于 Node 库的 imagemin (很多定制选项、可以处理多种图片格式) 配置 image-webpack-loader 5、缩小打包作用域 exclude/include (确定 loader 规则范围) resolve.modules 指明第三方模块的绝对路径 (减少不必要的查找) resolve.mainFields 只采用 main 字段作为入口文件描述字段 (减少搜索步骤,需要考虑到所有运行时依赖的第三方模块的入口文件描述字段) resolve.extensions 尽可能减少后缀尝试的可能性 noParse 对完全不需要解析的库进行忽略

搭建node服务(三):使用TypeScript

烂漫一生 提交于 2020-08-09 09:57:42
JavaScript 是一门动态弱类型语言,对变量的类型非常宽容。JavaScript使用灵活,开发速度快,但是由于类型思维的缺失,一点小的修改都有可能导致意想不到的错误,使用TypeScript可以很好的解决这种问题。TypeScript是JavaScript的一个超集,扩展了 JavaScript 的语法,增加了静态类型、类、模块、接口和类型注解等功能,可以编译成纯JavaScript。本文将介绍如何在node服务中使用TypeScript。 一、 安装依赖 npm install typescript --save npm install ts-node --save npm install nodemon --save 或者 yarn add typescript yarn add ts-node yarn add nodemon 另外,还需要安装依赖模块的类型库: npm install @types/koa --save npm install @types/koa-router --save … 或者 yarn add @types/koa yarn add @types/koa-router … 二、 tsconfig.json 当使用tsc命令进行编译时,如果未指定ts文件,编译器会从当前目录开始去查找tsconfig.json文件,并根据tsconfig

《前端开发从入门到放弃》

北战南征 提交于 2020-08-08 11:14:09
去年看到一篇文章 是写前端更新迭代的新技术,今天无意间又看到原创人翻译过来的文章啦 。这里贴下来 给大家灌一碗毒鸡汤 嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师? 准确地说,我是一名「前端工程师」。不过你算是找对人了。我对今年的技术别提多熟了,前端可视化、音乐播放器、能踢足球的无人机,你尽管问吧。我刚去 JS 大会和 React 大会逛了一圈,没有什么新技术是我不知道的。 厉害。是这样的,我要开发一个网页,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table。我的思路是用 jQuery 来做。 可别用 jQuery!现在哪还有人用 jQuery。现在是 2016 年了,你绝对应该用 React。 哦,好吧,React 是什么? React 是一个非常厉害的库,Facebook 的牛人写的。它能让页面更可控,性能极高,而且使用起来很简单。 听起来确实不错。我能用 React 展示服务器传来的数据吗? 当然可以,你只需要添加两个依赖,一个是 React,一个是 React DOM 额,等下,为什么是两个库? React 是我说的库,React

面试记录

不羁的心 提交于 2020-08-08 06:56:35
刚刚参加了一个电话面试,趁着还有记忆,把问题记下来: 项目经验 讲下http请求的几种方式,option请求有什么作用,什么情况下回触发option请求? vue有什么方式可以优化加载速度? js有几种数据类型? 用jquery怎么实现一个promise? amd,commonjs的了解 position的几种方式 translate一般做什么用? 如何基于vue实现一个下拉菜单组件? 在自定义组件中,model属性起什么作用? call,apply的用法 移动端在js上有什么跟pc端不一样的地方? 来源: oschina 链接: https://my.oschina.net/u/4340796/blog/4304700

require.js与IDEA的配合

Deadly 提交于 2020-08-07 21:26:53
本文主要讲述在html中使用requirejs时,如何让IDEA更加智能识别javascript的方法。 测试时的目录结构,一种典型的 thinkphp 的结构,同时,在 a.thml 中通过 requirejs 引用 了 Public/Home/View/moduleA/a.js, 后面我们的测试,都在 a.js 中进行。 路径可识别 + amd class, 对象,方法,都能完美识别 class 导出 我们在 Class1.js 中导出一个 Class,且只使用 AMD 方式导出,代码如下: define([], function () { class Class1 { static a() { } ia() { } } return Class1; }) View Code 当我用 control 按下时,Class1 能识别,且能进入 导出的符号 c1,能自动联想class静态,实例方法 对象导出 我们使用 moduleA/obj1.js 文件导出一个对象,代码如下: define([], function () { return { /* * * obj1 的 a 方法 */ a: function () { }, } }) View Code 同导出class一样,能完美自动联想 路径不可识别 + amd class导出 我们在 require.config 中配置了

【前端面试题】require和import的区别

给你一囗甜甜゛ 提交于 2020-08-06 02:18:50
谈一下require和import的区别 require是commonjs的规范,在node中实现的api,import是es的语法,由编译器处理。所以import可以做模块依赖的静态分析,配合webpack、rollup等可以做treeshaking。 commonjs导出的值会复制一份,require引入的是复制之后的值(引用类型只复制引用),es module导出的值是同一份(不包括export default),不管是基础类型还是应用类型。 写法上有差别,import可以使用import * 引入全部的export,也可以使用import aaa, { bbb}的方式分别引入default和非default的export,相比require更灵活。 require和import会不会循环引用 答案是不会,因为模块执行后会把导出的值缓存,下次再require或者import不会再次执行。这样也就不会循环引用了。比如a引入了b,b引入了a,如果a再次执行那么会再引入b,那就循环起来了,但实际上会做缓存,再次引入不会再执行。可以通过require.cache来查看缓存的模块,key为require.resolve(path)的结果。 模块中有定时器改变了导出的值,导出的值会不会变 //a.js let a = 1; set Timeout(() => { a = 2; },

20200803

送分小仙女□ 提交于 2020-08-06 01:24:11
js 数字转字符串 1. '' + 1 2. String(1) 3. `${1}` 千分位 toLocaleString() 正则表达式 vue3 rollup commonjs amd es umd 来源: oschina 链接: https://my.oschina.net/fyzhu/blog/4466793

ES6模块和commonjs模块的区别

断了今生、忘了曾经 提交于 2020-08-05 17:23:50
1. commonjs模块输出的是值的浅拷贝,ES6模块输出的是值的引用 (也就是说,cmmonjs模块输出后被改变,其他引用模块不会改变,而ES6模块会改变) 2. commonjs模块是运行时加载,而ES6模块是编译时输出接口,之所以webpack的tree-shaking只能作用于ES6模块,就是因为ES6模块在编译时就能确定依赖 来源: oschina 链接: https://my.oschina.net/u/4397179/blog/4274814

2020前端 web 最新 面试题 128 题汇总含详细答案

萝らか妹 提交于 2020-08-05 17:19:09
霖呆呆的近期面试128题汇总(含超详细答案) (本文转自群友) 前言 你盼世界,我盼望你无 bug 。Hello 大家好!我是霖呆呆! 哈哈😄,这是一篇面试总结文章,抱歉, webpack 和 HTTP 系列的先暂缓一下更新哈,Sorry~ 这篇文章是呆呆自己近期的一些面试汇总,算了一下有128道,基本都写了比较完善的答案,就算没有写也有推荐一些好的文章链接,文章篇幅较大,整理总结也花费了很多的时间和心血,题目也是根据公司规模的大小从易到难,算是见证了呆呆面试过程中的不足与成长吧 😅。还希望能帮助到正在一起努力求生存的小伙伴们。 另外,看到标题了吗? "掘金技术征文" ,嘻嘻,要不要考虑帮这么 "用心" 的呆呆拿拿大奖呢?放心放心,要真成了好处少不了你们😋。 所有文章内容都已整理至 https://github.com/LinDaiDai/niubility-coding-js 快来给我Star呀😊~ (因为近期面的主要都是一些深圳的中小公司,他们也还在招聘中,所以不便透露公司名称,还请大家理解…) 深圳某做海外加速器公司 4月22日上午 1. DIV+CSS布局的好处 代码精简,且结构与样式分离,易于维护 代码量减少了,减少了大量的带宽,页面加载的也更快,提升了用户的体验 对SEO搜索引擎更加友好,且H5又新增了许多语义化标签更是如此 允许更多炫酷的页面效果,丰富了页面

谈谈我们知识体系(js篇)

扶醉桌前 提交于 2020-08-05 07:50:09
前言 我是小白,励志要做 技术男神 的帅逼,目前住在 南京 ,做了快3年 前端工程师 ,会继续写笔记的。 js string对象的一些常用方法 普通方法 charAt() 方法返回字符串中指定位置的字符。 split // 通过把字符串分割成子字符串来把一个 String 对象分割成一个字符串数组。 slice // 提取字符串中的一部分,并返回这个新的字符串,获取索引号为1,2,3的字符串,即[1, 4) substr(start, length) // 方法返回字符串中从指定位置开始到指定长度的子字符串 substring(start, end) // 返回字符串两个索引之间(或到字符串末尾)的子串。 trim() // 删除一个字符串两端的空白字符 toLowerCase() // 将调用该方法的字符串值转为小写形式,并返回。 toUpperCase() // 将字符串转换成大写并返回。 正则方法 search // 执行一个查找,看该字符串对象与一个正则表达式是否匹配。 replace // 被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。 match // 当字符串匹配到正则表达式(regular expression)时,match() 方法会提取匹配项。 Array对象的一些常用方法 不改变原数组的方法 concat() // 连接两个或多个数组