我们知道,在Go中会给定义的变量一个默认值,比如int类型的变量默认值是0。我们在定义枚举值时,往往也会从0值开始定义。本文就解释如何区分是显示指定了变量的0值还是因为确实字段而得到的默认值。...这就是为什么我们在处理枚举值时必须要小心的原因。让我们来看一些相关的实践以及如何避免一些常见的错误。...此版本等同于第一个版本: Monday = 0 Tuesday = 1 Wednesday = 3 等等 使用 iota 允许我们避免手动定义常量值。例如,在大的枚举中手动设置常量值是会容易出错的。...在例子中,我们可以接收一个JSON内容并正确解码: { "id": 1234, "weekday": 0 } 这里,Weekday字段的值会等于0:Monday。...根据经验,枚举的未知值应该设置为枚举类型的零值。这样,我们就可以区分出显示值和缺失值了。
我们在进行网页设计的时候,为了网页的整体美观,可能需要将网页中的某些部分设置为背景颜色透明,那么如何设置背景颜色透明呢?...使用 RGBA 设置背景透明 我们使用 CSS 设置颜色的时候,一般适用十六进制值的颜色,比如黄色就是:#ffff00。其实颜色的值还可以通过 RGBA 的方式来设置。...使用 PHP 将十六进制的颜色值转换成 RGBA 格式 但是我们在后台设置颜色的时候,一般设置成十六进制的颜色值,然后再加上一个透明度: 那么怎么转换成 RGBA 格式呢?...我写了一个函数,使用 PHP 直接将十六进制的颜色值转换成 RGBA 格式或 RGB 格式(没有传递透明度): function wpjam_hex2rgba($color, $opacity=null...')'; } } 这个函数非常简单,只有两个参数,第一个是十六进制的颜色值,第二个是透明度,然后透明度没有传递,则生成颜色的 RGB 值,传递了则生成 RGBA 的值。
起初,伪元素的前缀使用的是单冒号语法,但随着Web的进化,在CSS3的规范里,伪元素的语法被修改成使用双冒号,成为::before、::after。Sass、Less 是什么?为什么要使用他们?...为什么要使用它们?结构清晰,便于扩展。 可以方便地屏蔽浏览器私有语法差异。封装对浏览器语法差异的重复处理, 减少无意义的机械劳动。可以轻松实现多重继承。...LESS 只是在 CSS 语法上做了扩展,所以老的 CSS 代码也可以与 LESS 代码一同编译。文档声明(Doctype)和有何作用? 严格模式与混杂模式如何区分?...文档声明的作用: 文档声明是为了告诉浏览器,当前HTML文档使用什么版本的HTML来写的,这样浏览器才能按照声明的版本来正确的解析。的作用:<!...左边元素设置为absolute定位,并且宽度设置为200px。将右边元素的margin-left的值设置为200px。.
console.log(Object.getPrototypeOf(friend) === dog); // true call(this),能确保正确设置原型方法内部的this值 super是指向当前对象的原型的一个指针...getter,setter getter是一个隐藏函数,会在获取属性值时调用 setter是一个隐藏 函数,会在设置属性值时调用 存在性 示例: var myObject = { a: 2...来设置对象的不可变性级别。...的 extend 8.JavaScript 专题之如何求数组的最大值和最小值 JavaScript 专题之如何求数组的最大值和最小值 image.png var arr = [ 2,34,5,8...几乎所有的对象在创建时[[Prototype]]属性都会被赋予一个非空的值。 使用in操作符来检查属性在对象中是否存在时,同样会查找对象的整条原型链。
入口(entry) 对应属性:entry 默认值:./src/index.js 作用说明: 用来规定 webpack 应该使用哪个模块作为构建内部依赖图的起点。...配合多个入口设置 如果配置创建了多个单独的入口,则应该使用 占位符 来确保每个文件具有唯一的名称。...比较有用的是如何动态设置 publicPath: 首先,何为 publicPath,以及周边概念 output.publicPath: 所有资源的基础路径,它被称为公共路径,以 / 结束,示例: //...loader 链中每个 loader,都对前一个 loader 处理后的资源进行转换。loader 链会按照相反的顺序执行。...默认值为 production。 用法 在配置文件中设置 // webpack.config.js module.exports = { ...
实际上,webpack 默认就是没有外链 css 的,你什么都不需要做就可以了。...所以我们需要做的就是为基础框架代码设置一个尽量长的缓存时间,使用户的浏览器尽量通过缓存加载这些资源。...正确使用 Tree Shaking 减少业务代码体积 Tree Shaking 这已经是一个很久很久以前就存在的 webpack 特性了,老生常谈,但事实上不是所有的人(特别是对 webpack 不了解的人...)都正确地使用了它,所以我今天要在这里啰嗦地再写一遍。...; 使用 SplitChunksPlugin 拆分公共代码; 正确地使用 Webpack 4.0 的 Tree Shaking; 使用动态 import,切分页面代码,减小首屏 JS 体积; 编译到 ES2015
实际上,webpack 默认就是没有外链 css 的,你什么都不需要做就可以了。...所以我们需要做的就是为基础框架代码设置一个尽量长的缓存时间,使用户的浏览器尽量通过缓存加载这些资源。...正确使用 Tree Shaking 减少业务代码体积 Tree Shaking 这已经是一个很久很久以前就存在的 webpack 特性了,老生常谈,但事实上不是所有的人(特别是对 webpack 不了解的人...)都正确地使用了它,所以我今天要在这里啰嗦地再写一遍。...Loading 态或者骨架屏; 去掉外联 css; 缓存基础框架; 使用动态 polyfill; 使用 SplitChunksPlugin 拆分公共代码; 正确地使用 Webpack 4.0 的 Tree
这篇博客主要是我使用vscode过程中的插件汇总,使用了这么长时间,总想有个总结,也方便日后查看,这里我将我使用的插件分为基础、框架、工具三个类型。...官网地址 VSCode插件官网地址,里面有很多的插件可以使用。 基础插件 这部分插件主要是和html、css、js有关的。...插件地址 if for 插值 … jQuery Code Snippets 虽然jQuery诞生于2006年,距今已有13年历史,但是还是有很多人在使用,所以也推荐一下。...插件地址 Sass Lint 这个是和sass配套的一个插件,检查sass语法是否正确,插件地址 vscode-fileheader 这个插件可以在文档顶部插入一段说明注释,非常便于你查看当日写了哪些内容...webpack 这个插件是一个webpack的辅助工具,可以创建webpack配置文件的,还有babel编译帮助功能,插件地址 最后 这就是我日常使用的一些vscode的插件,在此作为一个汇总,方便日后查看
file- loader:生成的文件名就是文件内容的MD5散列值,并会保留所引用资源的原始扩展名。...WebPack支持这3种规范,还支持混合使用。 12、如何为项目创建 package. json文件?...gulp是工具链,可以配合各种插件使用,例如对 JavaScript、CSS文件进行压缩,对less进行编译等;而 WebPack能把项目中的各种 JavaScript、CSS文件等打包合并成一个或者多个文件...module. export属于 CommonJS语法规范。 25、当使用Babel直接打包的 JavaScript文件中含有jsx语法的时候会报错,如何解决这个问题?...目前的做法是通过在 package. json中设置node的一个全局变量,然后在 webpack. config. js文件里面进行生产环境与开发环境的配置切换。
,它有一套访问变量的规则,这套规则来管理浏览器引擎如何在当前作用域以及嵌套的作用域中根据变量(标识符)进行变量查找 作用域链: 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问,通过作用域链...一旦我们将这些作用域嵌套起来,就变成了另外一个重要的知识点「作用域链」,也就是 JS 到底是如何访问需要的变量或者函数的。...所以在 if 代码块的前后输出 a 这个变量的结果,控制台会显示 a 并没有定义 HTTPS的特点 HTTPS的优点如下: 使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器;...第一种方式,使用 instanceof 运算符来判断构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。...当使用双等号对两种类型的值进行比较时会返回 true,使用三个等号时会返回 false。
再建:根据变换后的抽象语法树再生成代码字符串 Promise 模拟终止 当新对象保持“pending”状态时,原Promise链将会中止执行。...return new Promise(()=>{}); // 返回“pending”状态的Promise对象 从如何停掉 Promise 链说起(promise内存泄漏问题) promise 放在...注册所有配置的插件,好让插件监听webpack构建生命周期的事件节点,以做出对应的反应。 从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。...再建:根据变换后的抽象语法树再生成代码字符串 Promise 模拟终止 当新对象保持“pending”状态时,原Promise链将会中止执行。...return new Promise(()=>{}); // 返回“pending”状态的Promise对象 从如何停掉 Promise 链说起(promise内存泄漏问题) promise 放在
如何动态设置publicPath呢?...对于这个问题,有两种解决办法: 1)使用 resolve-url-loader,将 resolve-url-loader设置于 loader 链中的 sass-loader 之前,就可以重写 url。...JS文件,那么如何把这个JS文件引入我们的html中去呢,手动引入无法监测到hash值的变化,肯定是不OK的。...六、优化 到这里,我们项目已经能起来了,但是作为一名合格的程序猿,我们当然要探索更优实践。webpack有哪些常用的优化措施呢? 1、按需加载 webpack 提供了两种动态加载的语法。...第一种,也是推荐选择的方式是,使用符合 ECMAScript提案 的 import() 语法 来实现动态导入。
如何动态设置publicPath呢?...对于这个问题,有两种解决办法: 1)使用 resolve-url-loader,将 resolve-url-loader设置于 loader 链中的 sass-loader 之前,就可以重写 url。...JS文件,那么如何把这个JS文件引入我们的html中去呢,手动引入无法监测到hash值的变化,肯定是不OK的。...六、优化 到这里,我们项目已经能起来了,但是作为一名合格的程序猿,我们当然要探索更优实践。webpack有哪些常用的优化措施呢? 1、按需加载 webpack 提供了两种动态加载的语法。...第一种,也是推荐选择的方式是,使用符合 ECMAScript 提案 的 import() 语法 来实现动态导入。
这就像你使用 webpack 和 Babel 一样。 这个功能可以帮助你处理按需加载的代码,拆分代码,而且,并不需要 webpack 或者其它模块处理器。...你可以清楚的看到 OR 操作符总是返回一个真值,但是,空值操作符返回一个非空值。 4、可选链 可选链语法允许你访问嵌套更深的对象属性,而不用担心属性是否存在。如果,存在很好。...如果,还有更多的运行环境,这个对象也会有不同。 因此,你自己必要检查运行环境来决定使用正确是全局对象。...8、导出模块的命名空间 Javascript 模块中,一直都可以使用以下这种语法: import * as utils from '..../utils.mjs' 然而,直到现在还不可以像以下这样使用 export 语法: 译者注:目前是支持的(2020-04-24) export * as utils from '.
基础题 题目的答案提供了一个思考的方向,答案不一定正确全面,有错误的地方欢迎大家请在评论中指出,共同进步。...之类的原理是什么 它就是个编译器,输入语言是ES6+,编译目标语言是ES5 babel 官方工作原理 解析:将代码字符串解析成抽象语法树 变换:对抽象语法树进行变换操作 再建:根据变换后的抽象语法树再生成代码字符串...,减少对字符串的计算,合理使用闭包,首屏的js 资源加载放在最底部 js 自定义事件实现 原生提供了3个方法实现自定义事件 createEvent,设置事件类型,是 html 事件还是 鼠标事件 initEvent...有没有去研究webpack的一些原理和机制,怎么实现的 解析webpack配置参数,合并从shell传入和webpack.config.js文件里配置的参数,生产最后的配置结果。...注册所有配置的插件,好让插件监听webpack构建生命周期的事件节点,以做出对应的反应。 从配置的entry入口文件开始解析文件构建AST语法树,找出每个文件所依赖的文件,递归下去。
进行前端代码的优化,优化HTML代码为了能够使网站更好的搜索,让用户更快速搜索到我们的网站,写好HTML代码使用正确的闭合HTML标签,进行HTML代码层级间的合理缩进,属性值需要使用双引号,结构与样式进行有效的分离...module,webpack只能打包js文件,无法识别其他语法的文件,如果要让webpack打包其他文件,首先需要让webpack识别不同的文件。...,添加标签 babel-loader将ES6+、JSX语法转成ES5低版本语法 url-loaderurl-loader对未设置或者小于limit byte设置的图片以base64的格式进行转换...babel loader babel是一个js编译器,它是通过语法转换器支持最新版本的JavaScript,这插件允许你使用新语法,无需等待浏览器支持。...resolve配置webpack如何寻找模块对应的文件,webpack在启动后会从配置的入口模块触发,找出所有依赖的模块,默认会采用模块化标准里约定号的规则去寻找。
在上一篇文章中我们用webpack与webpack-cli搭建了最简单的前端应用,通常在项目中我们会用vue或者react,我们看下如何利用我们自己搭的工程来适配react 正文开始......前置 首先我们要确定,react并不是在webpack中像插件一样安装就可以直接使用,我们需要支持jsx以及一些es6的一些比较新的语法,在creat-react-app这个脚手架中已经帮我们高度封装了...所以我们需要知道一个react项目需要哪些插件的前提条件,本文主要参考从头开始打造工具链[1] 安装babel相关插件 npm i @babel/core @babel/cli @babel/preset-env...HMR,我们需要结合new webpack.HotModuleReplacementPlugin(),并且在devServer中设置hot为true module.exports = { ......() ], devServer: { hot: true } } 完整的配置webpack.config.js就已经ok了 // webpack.config.js const
不过按语法说明,await 等待的是一个表达式,这个表达式的计算结果是 Promise 对象或者其它值(换句话说,就是没有特殊限定)。...一个页面发送消息,另一个页面判断来源并接收消息如何提⾼webpack的打包速度?(1)优化 Loader对于 Loader 来说,影响打包效率首当其冲必属 Babel 了。...在 Webpack4 中,不需要以上这些操作了,只需要将 mode 设置为 production 就可以默认开启以上功能。...我了解的预加载的最常用的方式是使用 js 中的 image 对象,通过为 image 对象来设置 scr 属性,来实现图片的预加载。为什么0.1+0.2 !...-- v-model 只是语法糖而已 --> <!
Webpack 实现 tree-shaking 可以参考这篇文章 如何在 Webpack 2 中使用 tree-shaking(链接地址见文末参考),掘金也有翻译版,当然如果不愿意花时间考古,也可以看下面这一段总结...语法使用层面 首先,mode 为 production 模式下才会启用更多优化项,包括我们本文讲的压缩代码与 tree shaking; 使用 ES2015 模块语法(即 import 和 export...); 确保没有编译器将 ES2015 模块语法转换为 CommonJS 的,把 presets 中的 modules 设置为 false,告诉 babel 不要编译模块代码。...,尽量不写带有副作用的代码,使用 ES2015 模块语法; 在项目 package.json 文件中,添加一个 sideEffects 入口,设置 sideEffects 属性为 false,也可以通过...参考资料 如何在 Webpack 2 中使用 tree-shaking()https://blog.craftlab.hu/how-to-do-proper-tree-shaking-in-webpack
实际上,webpack 默认就是没有外链 css 的,你什么都不需要做就可以了。...所以我们需要做的就是为基础框架代码设置一个尽量长的缓存时间,使用户的浏览器尽量通过缓存加载这些资源。...具体如何配置 SplitChunksPlugin,请参考 webpack 官方文档。...正确使用 Tree Shaking 减少业务代码体积 Tree Shaking 这已经是一个很久很久以前就存在的 webpack 特性了,老生常谈,但事实上不是所有的人(特别是对 webpack 不了解的人...)都正确地使用了它,所以我今天要在这里啰嗦地再写一遍。
领取专属 10元无门槛券
手把手带您无忧上云