Stay Hungry, Stay Foolish.
技术最前端,专注 Web 技术学习与总结。JavaScript, JS, ES6, TypeScript, Vue, PHP, CSS3, Html5, Node, Git, Markdown 等技术文章。
Stay Hungry, Stay Foolish.
软件也像人一样,具有生命力,从出生到死亡,会经历多种变化。软件架构设计也不是一蹴而就的,是不断地演进发展。每个程序员都可以从理解编程原则和模式中受益。
软件设计原则是一组帮助我们避开不良设计的指导方针。根据 Robert Martin
下面这些软件设计原则是我从一些书籍和网络中收集而来,并不完整,而且你也需要在一些有「冲突的原则」之间进行权衡和取舍。本文或许会对你的编程、程序设计、讨论或评审工作有所帮助。
无论是在注册流程、多视图步进器,还是在单调的数据输入界面中,表单都是数字产品设计中最重要的组成部分之一。本文着重介绍了表单设计中常见的该做和不该做的事情。请记住,这些都是一般准则,每个规则都有例外。
多栏会破坏用户在垂直方向上的关注趋势。
调试 JavaScript 中的异步代码,有时会感觉像在趟雷。你不知道 console.log
何时何地会打印出来,你也不知道你的代码是如何执行的。
你很难正确地构造异步代码,使其按照你的意图以正确的顺序执行。
如果你在编写异步代码时有一些指导,并且在你即将犯错时得到一个有用的信息,那不是很好吗?
幸运的是,在我们将代码推送到生产中之前,我们有提示器来捕捉一些错误。下面是一个编译的提示规则列表,专门帮助你在 JavaScript 和 Node.js 中编写异步代码。
即使你最终没有在你的项目中使用这些规则,阅读它们的描述也会使你更好地理解异步代码,提高你的开发技能。
几乎所有前端项目中都有 yarn.lock
/ package-lock.json
文件(以下以 npm 为例)。打开浏览,你会发现它长得类似 package.json
的依赖,但是冗长得多。很多同学可能都不知道他们是干什么用的,甚至部分同学在项目跑不起来的时候还会暴力把 lock 文件给干掉,最后反而导致更严重的错误。
那么,lock 文件到底是干什么用的?为什么我们会需要 lock 文件?
减小文件搜索范围
resolve.modules
:Webpack 的 resolve.modules
配置模块库(即 node_modules)所在的位置,在 js 里出现 import 'vue'
这样不是相对、也不是绝对路径的写法时,会去 node_modules 目录下找。但是默认的配置,会采用向上递归搜索的方式去寻找,但通常项目目录里只有一个 node_modules,且是在项目根目录,为了减少搜索范围,可以直接写明 node_modules
的全路径;同样,对于别名(alias
)的配置,亦当如此:
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
resolve: {
extensions: ['.js', '.vue', '.json'],
modules: [
resolve('src'),
resolve('node_modules')
],
alias: {
'vue$': 'vue/dist/vue.common.js',
'src': resolve('src'),
'assets': resolve('src/assets'),
'components': resolve('src/components'),
// ...
'store': resolve('src/store')
}
},
...
}
Yeoman 是一个脚手架生成工具,负责生成一个项目的基本解构,能够节省重复劳动,提升开发体验。
Yeoman 为我们提供了 Generator 的基类,于是:
const generators = require("yeoman-generator");
module.exports = generators.Base.extend({
constructor: function () {
generators.Base.apply(this, arguments)
// your logic
}
})
CentOS7 环境
安装 Docker:
# 安装依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加 docker 下载仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker-ce
sudo yum install docker-ce
# 启动 docker
sudo systemctl start docker
# 设置开机启动
sudo systemctl enable docker
# 验证
sudo docker --version
sudo docker run hello-world
在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif 和 Serif,打字机体虽然也属于 Sans Serif,但由于是等宽字体,所以另外独立出 Monospace 这一种类,例如在 Web 中,表示代码时常常要使用等宽字体。
Serif 的意思是,在字的笔划开始及结束的地方有额外的装饰,而且笔划的粗细会因直横的不同而有不同。相反的,Sans Serif 则没有这些额外的装饰,笔划粗细大致差不多。如下图:
可以看出,我们平时所用的 Georgia、Times New Roman 等就属于 Serif 字体,而 Arial、Tahoma、Verdana 等则属于 Sans Serif 字体。对中文而言,同样存在这两大种类,很明显,宋体、细明体(繁体中常用)等就属于 Serif,而黑体、幼圆等则属于 Sans Serif。
首先,使用 JavaScript 语言,写一个可执行脚本 hello
#!/usr/bin/env node
console.log('hello world');
然后,修改 hello 的权限:
chmod 755 hello
现在,hello 就可以执行了:
$ ./hello
hello world
Shell 是用户与 Linux 或 Unix 内核通信的工具,shell 编程指的并不是编写这个工具,而是指利用现有的 shell 工具进行编程,写出来的程序是轻量级的脚本,我们叫做 shell 脚本。
Shell 的语法是从C语言继承过来的,因此我们在写 shell 脚本的时候往往能看到C语言的影子。
Shell 脚本实在是太灵活了,相比标准的 Java、C、C++ 等,它不过是一些现有命令的堆叠,这是他的优势也是他的劣势,太灵活导致不容易书写规范。以下整理本人在写 shell 脚本的过程中形成了自己一些规范,这些规范还在实践中,在此分享出来,以期更多的人来帮助我完善。
关注前端开发