JavaScript设计模式——观察者模式
观察者模式是一种常用的设计模式,它的好处是可以解耦两个对象之间的信息传递。 场景 某购物网站展示用户名、头像、获取购物车数据等等操作,需要在登录完成后进行。假设现在展示用户名、头像、获取购物车数据等操作的方法名称如下: showUsername() show...
愿你坚持不懈,努力进步,进阶成自己理想的人
—— 2017.09, 写给3年后的自己
观察者模式是一种常用的设计模式,它的好处是可以解耦两个对象之间的信息传递。 场景 某购物网站展示用户名、头像、获取购物车数据等等操作,需要在登录完成后进行。假设现在展示用户名、头像、获取购物车数据等操作的方法名称如下: showUsername() show...
一、核心概念 webpack 是一个现代 JavaScript 应用程序的模块打包器。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle(通常只有一个),由浏览器加载。 其核心概念有4个:入口(entry)、出口(output)、loader、插件 1、入口(entry)
大型软件的开发需要有清晰合理的架构,否则将难以开发和维护。而MV*则是为了解决问题而出现的软件架构 目前的MV*主要有MVC、MVP、MVVM,而三者的主要差别,在于如何粘合Model和View层。 一、MVC
opn是Node下一个更好的启动模块。它可以打开网站、文件、可执行文件,而且opn是跨平台的 为什么使用opn opn是一个积极维护中的模块 支持app参数 由于使用
ECMA中有两种属性:数据属性和访问器属性 一、数据属性 数据属性,其特性主要有: 1)[[Configurable]],表示一个属性是否可配置的,当这个值为true的时候,那么可以有以下行为: 能够通过delete删除属性
Node可以很方便地进行命令行程序的开发,我们所接触到的sass、less、npm等程序,都是命令行程序。 一、可执行脚本 自从有了Node后,我们就可以使用JavaScript来编写可执行脚本了。最简单的可执行脚本hello如下: #!/usr/bin/env node...
一、注册组件 1、全局注册 注册组件的方式为: Vue.component(tagName, options); 注意:组件的注册,要在实例化实例之前完成。即: Vue.component('my-com...
在JS中,主要通过RegExp来支持正则表达式 一、正则的创建 可以使用以下的语法来创建正则: let pattern = /pattern/flags 其中,pattern
一、问题场景 在业务开发中,经常会遇到需要控制超长文本的问题。而处理这个问题一般的做法是对其进行截断:传统情况下,我们可以限制字符最多可以有几个字符,然后超出这个阈值后substr并加上省略号。但是这种方案是有局限性的。如果我们的文本显示区域是随着窗口大小变化的,那么固定字符长度的截断方案仍然不美观,所以我们通常使用CSS来进行控制。如:
git config是用来对git进行配置的命令 一、查找 git config配置项的查找顺序依次为“Current Project -> User -> System”,其中: 1、/etc/gitconfig文件,这个文...
path对象是NodeJS提供的一个十分方便于路径处理的模块 下面了解一下这个模块的用法,如下: 一、引入path对象 const path = require('path'); ...
ES6中开始引入了class这一关键字,使得能够以更加清晰的方法来定义类和使用类。实际上,class本质上是一个语法糖 一、示例 定义一个类形如: class Point { constructor...
在工作中,我们经常遇到以下的场景: 在B分支上正在进行开发,但是此时QA突然告诉你A分支出了个问题。这时候,我们需要切到A分支上来修复这个问题,但是手头的代码还是在开发中的,我们并不想直接commit一份当前的代码,这种情况下怎么办呢?那么git stash就派上用场了 git...
一、传统的var 在ES6之前,我们声明一个变量,都是使用var关键字进行声明的,而之前,JavaScript中也只有全局作用域和函数作用域(with和catch块也会创建作用域)。使用var会有一些奇奇怪怪的问题,如: 1)可以重复声明:
一、不定参数 在ES6之前,我们通常使用arguments来实现不定参数,比如: function sum() { var sum = 0; var args = arguments; for (var i in args) { sum += args[i];...