使用 pnpm 替代 yarn, npm

pnpm 的优势不用多说, 懂得自然了解了, 不懂的去官网看下他们的介绍 项目初衷 | pnpm 这里主要的目的是使用 pnpm 替换掉 yarn 和 npm

  • npm 是 node 的包管理工具, 所以我的理解是 node 是基础, 需要 npm 必须要有 node
  • yarn 作为 npm 的一个包, 必须要有 npm , 才能够使用 yarn
  • 然而 node 的版本也可以支持切换, 这样再切换 node 的时候则需要使用到 nvm , 而 nvm 是依赖于 npm 和 yarn 的.

这样造成的依赖循环逃脱不了轮回, 就会导致东西关联较多
在我了解了 pnpm 之后他可以很好的解决以上问题并且还有它自己独到的优势

  • 纯净安装, 依托于 brew
  • 可以管理全局 node , 并支持自动安装
  • 包管理使用软链接方式, 不必在多项目之间重复下载占用磁盘空间

所以就打算用他替换掉 nvm, yarn, npm 这些工具, 仅仅使用一个即可

阅读更多

Node 更换源使用国内镜像

Npm

TaoNpm 的更新流程示意图:

为什么要换源? npm 官方站点 http://www.npmjs.org/ 并没有被拦截,但是下载第三方依赖包的速度由于和外网联通的限制, 速度不能满足实际的使用需求.为了加速访问, 我们可以使用镜像来进行访问
国内有几个镜像站点可以供我们使用

速度非常快,镜像站会实时更新,为我们节省了好多时间.

阅读更多

Web 常见问题

Error: ResizeObserver loop limit exceeded 问题

发现一个报错 ResizeObserver loop limit exceeded,这个报错是在公司平台项目监听系统中提示的,而浏览器的 console 中却没有提示



如果要在本地开发中调试定位这个问题,可以在项目代码里加入一个方法,在控制台中输出这个错误:

阅读更多

[转+] 解决 Webstorm 不支持 nodejs 等语法提示和补全

在使用 Webstorm 写 es6、node 的时候,会出现没有语法提示甚至是产生波浪线,例如常用的 require, import

不仅是内置函数语法,不仅是 js,在一些第三方 npm 库(比如 element-ui),在 vue/html 等上也被黄色背景色标上“未知标签名”的语法提示

既影响美观,又不支持代码候选补全,实在对不起 WebStorm 前端开发利器的称号。
解决方法

  1. 设置 Webstorm js 语法支持到 es6(或根据需要选择)

打开 :  Preferences | Languages & Frameworks | JavaScript
将 JavaScript Language version 更改为 项目所需要的版本,

  1. 下载 node 语法库

方法 1: 推荐

阅读更多

从浏览器的渲染原理讲CSS性能

Smallni | 2011.09.13 |  前端Tips
3
平时我们几乎每天都在和浏览器打交道,写出来的页面很有可能在不同的浏览器下显示的不一样。苦逼的前端攻城师们为了兼容各个浏览器而不断地去测试和调试,还在脑子中记下各种遇到的BUG及解决方案,而我们好像并没有去主动地关注和了解下浏览器的工作原理。如果我们对此做一点了解,我想在项目过程中就可以根据它有效的避免一些问题以及对页面性能做出相应的改进。今天我们主要根据浏览器的渲染原理对CSS的书写性能做一点改进(当然还有JS本篇文章暂不考虑,后面的文章会做介绍),下面让我们一起来揭开浏览器的渲染原理这一神秘的面纱吧:
最终决定浏览器表现出来的页面效果的差异是:渲染引擎 Rendering Engine(也叫做排版引擎),也就是我们通常所说的“浏览器内核”,负责解析网页语法(如HTML、JavaScript)并渲染、展示网页。相同的代码在不同的浏览器呈现出来的效果不一样,那么就很有可能是不同的浏览器内核导致的。
我们来看一下加载页面时浏览器的具体工作流程(图一):

(图一)
1、解析HTML以重建DOM树(Parsing HTML to construct the DOM tree ):渲染引擎开始解析HTML文档,转换树中的标签到DOM节点,它被称为“内容树”。
2、构建渲染树(Render tree construction):解析CSS(包括外部CSS文件和样式元素),根据CSS选择器计算出节点的样式,创建另一个树 —- 渲染树。
3、布局渲染树(Layout of the render tree):  从根节点递归调用,计算每一个元素的大小、位置等,给每个节点所应该出现在屏幕上的精确坐标。
4、绘制渲染树(Painting the render tree)  : 遍历渲染树,每个节点将使用UI后端层来绘制。
主要的流程就是:构建一个dom树,页面要显示的各元素都会创建到这个dom树当中,每当一个新元素加入到这个dom树当中,浏览器便会通过css引擎查遍css样式表,找到符合该元素的样式规则应用到这个元素上。
注意了:css引擎查找样式表,对每条规则都按从右到左的顺序去匹配。 看如下规则:

阅读更多

[转] ESLint 使用入门

原文地址:ESLint 使用入门
ESLint 是一个开源的JavaScript验证工具,相比JSLint,ESLint具有可配置性。其他跟JSLint 的不同之处:

  • ESLint 使用 Esprima 来进行 javascript 解析
  • ESLint 使用 AST 来修改代码模式
  • ESLint 是完全可插的,每个单个的规则都是一个插件,用户可以在运行时增加更多的插件

在团队协作中,为避免低级 Bug、产出风格统一的代码,会预先制定编码规范。使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量。
在以前的项目中,我们选择 JSHint 和 JSCS 结合使用,WebStorm 等开发环境已经支持这些工具,使用起来很顺手。然而,最近使用 React JSX 语法时,却遇到了问题:JSHint 不支持 JSX 语法。虽然有 JSXHint 这样的 JSHint 衍生工具,但个人并不喜欢这样的实现方式:不是以插件的形式实现,而是重新重新包装了一个工具。Nicholas C. Zakas 也不喜欢,所以有了 ESLint
原来选择 JSHint 的时候,也对比过 ESLint,基于 ESLint 在速度上比 JSHint 要慢一些,最终使用了 JSHint。现在需要 JSX 支持了,才发现 ESLint 的设计理念更符合实际需求。

阅读更多

html实体 HTML Codes

Again, nothing to do with ASCII really, but has been requested by a number of you out there. To get special characters to show on an HTML web page, special HTML codes can be used (ascii code or word) and are interpretted by the web browser. These HTML codes are otherwise referred to as html entities, html characters or html symbols.

再一次,没有整理ASCII的欲望了,但是还有一系列你需要的东西,为了在html网页上显示特殊字符,可以使用特殊的html代码在浏览器中显示特殊的字符,这些字符可以表现为html实体,html字符或者html符号

Html5 - link

属性
       href
           指定链接文档的位置
           相对地址 - ‘/theme/theme.css’
           绝对地址 - ‘http://www.example.com/styles/style.css'
       hreflang
           链接文档的语言
           两个字母的语言代码用来指定链接文档的语言
           [ HTML5 - html Language Code]
       media
           指定哪一种设备将使用这个文档
           ———-
           可能的操作符
           —–
           and, not, ‘,’(or)
           ———-
           设备
           —–
           all         默认,适合所有设备
           aural       听觉的, 演讲综合
                braille     布莱叶盲文回馈设备
                handheld    手持设备, 小屏幕,有限带宽
                projection 放映者
                print       打印设备
           screen      屏幕设备, 电脑屏幕
           tty         打字设备
           tv          电视设备, 低分辨率,有限的滚动能力
           ———-
           值
           —–
           width
                指定目标显示区域的宽度   [min-/max-]
           height
                指定显示区域的高度   [min-/max-]
           device-width
                指定显示目标的宽度  [min-/max-]
           device-height
                指定显示目标的高度 [min-/max-]
           orientation
                指定显示区域或者纸的定位方向
                portrait      纵向
                landscape     横向
           aspect-ratio
                方位比例[media=”screen and (aspect-ratio:16/9)”]       [min-/max-]
                device-aspect-ratio
                设备比例    [min-/max-]
                color
                指定可以新鲜事的颜色的位数    [min-/max-]
                color-index
                指定目标可以控制的的颜色的数量    [min-/max-]
                monochrome
                指定在单色框架缓存上每个像素的位数    [min-/max-]
           resolution
                分辨率单位(dpi, dpcm)
                media=”print and (resolution:300dpi)”      [min-/max-]
                scan     
                扫描
                progressive        进程扫描
                interlace          交错扫描
                grid
                指定输出设备是grid或者位图, 可用值是 (0,1)
                        
       rel
           指定文档和当前页面的关系
           alternate      连接到文档的可替换的版本
           archives
           author         连接到作者的介绍页面
           bookmark
           external
           first
           help           连接到帮助文档
           icon           为文档导入一个图标显示
           last
           license        连接到文档的版权信息
           next           指定文档是某个文档的一系列, 并连接到本系列的下一个文档
           nofollow
           noreferrer
           pingback
           prefetch       指定可以被缓存的目标源码
           prev           指定目标文档的上一个链接
           search         连接到文档的搜索工具
           sidebar
           tag
           up
           stylesheet     连接到导入样式的地址
                canonical      权威页面
                          
       sizes
           指定链接源文件的高度和宽度[width x height], 仅仅适用于 ‘icon’ 属性
           连接到大小的一个列表
       type
           指定链接文档的MIME类型

HTML5元素属性

html 5 元素和 html4.01 的区别, 在我的文档中我会使用不同的颜色来值定
      新版本的颜色会使用绿色
            
      老版本的颜色使用橙黄色
            
      html代码使用淡蓝色
            
      自己添加的代码使用紫色标注,便于调试和对比错误的地方
            
通用属性(Global Attributes)
       accesskey
           指定一个快捷键来激活或者设置目标点
          class
           指定一个或者多个样式名称
          contenteditable
                    指定元素的内容是否能够被编辑
          contextmenu
                    指定一个元素的右键菜单
          dir
           指定文本的方向
          draggable
                    指定元素是否可以被拖动
          dropzone
                    Specifies whether the dragged data is copied, moved, or linked, when dropped
          hidden
                    Specifies that an element is not yet, or is no longer, relevant
          id
                    Specifies a unique id for an element
          lang
                    Specifies the language of the element’s content
          spellcheck
                    Specifies whether the element is to have its spelling and grammar checked or not
          style
                    Specifies an inline CSS style for an element
          tabindex
                    Specifies the tabbing order of an element
          title
                    Specifies extra information about an element

H5 中使用浏览器唤醒 app

首次唤醒使用 iframe 方式, 这种方式的好处是不要求用户必须跳转链接, 还可以在当前页面使用

再次唤醒使用强制跳转方式, 如果未跳转则进入引导下载页面

以下代码为 react 实现方式, 仅作流程参考

阅读更多