译: Node.js Playbook

前言(待完成)

node-playbook(译)

地址:
https://github.com/HiFaraz/node-playbook#contents

Node.js Playbook

Node.js PlayBook 是一个使用Node.js来开发的“起手”指南。

它将在两方面来帮助你:

  • 解决问题:如果你有特需要,它可以给你一个对大部分人起作用的解决方案。
  • 发现新的想法: 如果你只是浏览,你将了解可以帮助到你的项目的新东西。

面向人群

  • 那些只是想避免很多麻烦来开始一个项目的初学者
  • 那些想要一个“起手”来指导Node.js系统不熟悉的地方的有一定经验的程序员

如何使用

这只是一个学习工具,并且你必须明白它的限制。

  • 阅读官方文档和教程来实现任何解决方案。此篇文章并不能代替它们。
  • 此篇文章不会教授如何编程
  • 此篇文章不会教授 JavaScript
  • 此篇文章不是使用Node.js开发的唯一方式。使用这篇文章来开始,并且保持学习关于其他使用Node.js解决问题的方式
  • 此篇文章不是使用Node.js开发最好的方式。它只是一种减少大量学习开销,从而足够使你起手的方式。一旦你的项目变得复杂,你需要寻找一种更好的解决方案来符合你的需要。
  • 并非所有建议是专门针对Node.js的

不要把这篇文章当作你唯一的学习资源。此篇文章只能给你最广泛适用的解决方案。随着你的成长,你应该去探索其他的解决方案。这不是Node.js开发的全部和最终所有。它只是你学习经验和探索的一部分,而不是全部。

黄金法则:尽可能避免coding

做最佳懒惰。这里只有两个原则:

  1. 完成任务的最快方式是什么也不做
  2. 完成任务第二快的方式是让其他人去做
    • 例如,这篇文章就是一个使用别人作品获得成功的例子
    • 如果你可以逃脱它,使用Node.js core API
    • 使用预生成的代码块,例如npm packages
      • 确定你使用了高质量的依赖

通则

本节覆盖了一般问题,无论你的开发的目标是什么

安装Node.js

目标

安装 Node.js

建立一个让你开始的开发环境(e.g. 编辑器,git GUIs,terminals,FTP clients)并且可以根据需求改变。

解决方案

下载并安装这些工具:

  • 编辑器:Atom
    • Atom包(Atom Packages)/插件(plug-ins):
      • 包(Package)安装脚本在这里
      • atom-beautify (Ctrl/Cmd+comma -> Packages -> Search for atom-beautify -> Settings -> toggle the Beautify On Save option for every language you want)
      • atom-html-preview (press Ctrl/Cmd+p in the editor to open the preview)在编辑器中打开预览
      • fold-lines
      • platformioi-ide-terminal (terminal at bottom of editor) 编辑器底部的终端
      • markdown-preview (press Ctrl/Cmd+Shift+M in the editor to open the preview)在编辑器中打开markdown预览
      • linter (A linter is a small program that checks code for stylistic or programming errors.Available linters) 一个小程序用来检查代码风格或者语法错误
      • linter-jshint (JavaScript linter) JavaScript 检查器
      • highlight-selected (Double click on a word to highlight it throughout the open file) 在打开的文档中双击一个词语来高亮它
      • minimap (broad overview of code) 编辑器代码文件缩略图
      • minimap-cursorline
      • atom-typescript (.ts support for atom) 使atom支持typescript的.ts格式文件
      • autoclose-html
      • double-tag (edit HTML open and close tags simultaneously) 同时编辑HTML的打开和关闭标签
      • color-picker (highlight a color, right click, choose color-picker.Can view & edit colors visually)高亮一个颜色,右键单击,选择 color-picker,可以通过视觉查看并编辑这个颜色
      • package-sync (save atom packages across computers with a config file) 将atom 包配置保存为一个配置文件
    • 版本控制(Version Control): git
    • 仓库(Repository(repo) hosting): Github
    • Git GUI: SourceTree
    • API testing: Postman
    • Socket testing: Socket.io tester

工作流程

目标

建立一个全新的项目

解决方案
  1. 创建一个新的仓库在Github上
    • 当创建一个仓库时在gitignore设置下选择Node
    • 选择创建一个 README.md 文件
  2. 使用终端命令行(terminal)或者SourceTree克隆(Clone)它到你的计算机
  3. 建立你的文件和文件夹结构
  4. 在你当前文件夹下打开终端窗口(或者当你在SourceTree中打开仓库时使用Terminal按钮)
  5. 在你的终端(terminal)中运行npm init来创建一个package.json文件
    • 设置你的初始化版本为0.1.0 (参见‘版本编号’)
    • 当系统提示输入许可证名称时,通过输入MIT为开源项目选择一个MIT license
  6. 运行atom。在你的终端中(terminal)加载你的项目文件夹

文件和文件夹结构

目标

建立一个文件和文件夹结构来使你之后增加更多的复杂性,例如构建和测试系统

解决方案
  1. 创建两个子文件夹
    1. src: 将你所有的源代码放到这里
    2. test: 将你所有的测试代码放在这里
  2. src文件夹中创建一个文件命名为index.js

代码风格

目标

制定一个可以让你在分享代码你的代码时不会造成困扰的代码风格

一段糟糕的代码风格反应了糟糕的你

解决方案

可以试试Airbnb的代码风格(Airbnb’s Javascript Style Guide)[https://github.com/airbnb/javascript]

本机模块和Windows

目标

当你尝试安装一个npm包时,修复与node-gyp相关的错误

npm尝试在你的计算机中构建这个包发生的问题是由于非javaScript代码造成的。除非你已经安装了构建环境,不然会报错。

推荐解决方案

寻找另一个使用纯JavaScript的npm包来完成这项工作。例如,bcryptjs是流行的bcrypt模块的简易替换

如何找到替代品:

  • 如果仓库托管在Github上或者一个类似的平台上,搜索任何人提的关于Windows或者node-gyp的问题(issues)。可能已经有人放上了用纯JavaScript替代品的链接。
  • 在线搜索

确定你选择的替代方案是一个合适的替代者。寻找:

  • 最近活跃的贡献者
  • 友好的文档
  • 下载次数

这是最简单的解决方案,因为它笑除了该问题,而不是迁就它。从本地模块获得的速度优势将不会失去,直到你的开发周期结束。

可选择的解决方案

当且仅当你不能找到一个合适的替代npm包时在做。
按照node-gyp README上的windows安装说明做。

Web

如果你正在尝试建立一个web应用看这里。

技术栈(Technology stack)

目标

选择一个技术栈(例如,服务端框架,数据库,前端框架,主机平台(hosting platform))

解决方案
  • 后端:
    • 主机(Hosting): Heroku(选择”free dyno”选项)
    • 服务端框架: express
    • Sockets: sockit.io
    • 数据库(Database): PostgreSQL(在使用免费的Heroku上部署它)
    • 对象关系映射: Sequelize
  • 前端:

移动端(Mobile)

这一节覆盖了一些常遇的问题:

  • 使用JavaScript开发与部署本地移动端应用
  • 用web应用服务移动端用户

我正在寻找这一节的贡献者

桌面(Desktop)

这一节覆盖了一些在开发与部署桌面应用时的一些常规问题。

我正在寻找这一节的贡献者

多系统平台框架

目标

打包并运行你的Node.js应用在任何操作系统作为桌面应用运行。

解决方案

使用Electron。它现在第一个稳定的版本子啊2016年5月11日发布。它受到Github和Atom的支持,并且有一个活跃的社区。Electron应用可以在Mac,Windows和Linux上安装并运行。

Packages

这一节主要覆盖了在开发与发布可复用的包时遇到的一些问题。

版本编号

目标

更新版本号来告诉使用它的用户它有了很大的改变

解决方案

使用Semantic Versioning(a.k.a semver).

  • 增加你的patch(0.0.x)版本使用npm version patch
  • 增加你的minor(0.x.0)版本使用npm version minor
  • 增加你的major(0.x.0)版本使用npm version major

使用命令npm version将自动将package.json的版本号更新,并且你可以使用npm push --tags来为你创建一个git tag

这里是关于semver最重要的几点:

给定一个版本号 MAJOR.MINOR.PATCH, 增加:

  • MAJOR 版本 当你使API做出改变而不兼容时
  • MINOR 版本 当你添加了一个功能来向后兼容时
  • Patch 版本 当你修复向后兼容的bug时
    我应该如何处理版本在0.y.z的初始开发阶段?

最简单的是开始你的初始开发版本到 0.1.0 然后对每一个版本增加 minor

我怎么知道什么是是1.0.0版本呢?

如果捏到软件正在用于产品中,它应该可以是1.0.0。如果你非常担心向后兼容性,你应该就可以到 1.0.0了。

即将到来的章节

我们非常愿意你来帮助将Playbook变得更加有用。这里有一些章节我们非常愿意收到pull request:

总结(待完成)

(未完待续…)