前言(待完成)
node-playbook(译)
Node.js Playbook
Node.js PlayBook 是一个使用Node.js来开发的“起手”指南。
它将在两方面来帮助你:
- 解决问题:如果你有特需要,它可以给你一个对大部分人起作用的解决方案。
- 发现新的想法: 如果你只是浏览,你将了解可以帮助到你的项目的新东西。
面向人群
- 那些只是想避免很多麻烦来开始一个项目的初学者
- 那些想要一个“起手”来指导Node.js系统不熟悉的地方的有一定经验的程序员
如何使用
这只是一个学习工具,并且你必须明白它的限制。
- 阅读官方文档和教程来实现任何解决方案。此篇文章并不能代替它们。
- 此篇文章不会教授如何编程
- 此篇文章不会教授 JavaScript
- 此篇文章不是使用Node.js开发的唯一方式。使用这篇文章来开始,并且保持学习关于其他使用Node.js解决问题的方式
- 此篇文章不是使用Node.js开发最好的方式。它只是一种减少大量学习开销,从而足够使你起手的方式。一旦你的项目变得复杂,你需要寻找一种更好的解决方案来符合你的需要。
- 并非所有建议是专门针对Node.js的
不要把这篇文章当作你唯一的学习资源。此篇文章只能给你最广泛适用的解决方案。随着你的成长,你应该去探索其他的解决方案。这不是Node.js开发的全部和最终所有。它只是你学习经验和探索的一部分,而不是全部。
黄金法则:尽可能避免coding
做最佳懒惰。这里只有两个原则:
- 完成任务的最快方式是什么也不做
- 问你自己没有它你是否能活
- 越少的代码意味着越少的bug
- 也可以看看这些:
- 完成任务第二快的方式是让其他人去做
- 例如,这篇文章就是一个使用别人作品获得成功的例子
- 如果你可以逃脱它,使用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
- Atom包(Atom Packages)/插件(plug-ins):
工作流程
目标
建立一个全新的项目
解决方案
- 创建一个新的仓库在Github上
- 当创建一个仓库时在
gitignore
设置下选择Node - 选择创建一个
README.md
文件
- 当创建一个仓库时在
- 使用
终端命令行(terminal)
或者SourceTree
克隆(Clone)它到你的计算机 - 建立你的文件和文件夹结构
- 在你当前文件夹下打开终端窗口(或者当你在SourceTree中打开仓库时使用Terminal按钮)
- 在你的终端(terminal)中运行
npm init
来创建一个package.json
文件- 设置你的初始化版本为
0.1.0
(参见‘版本编号’) - 当系统提示输入许可证名称时,通过输入
MIT
为开源项目选择一个MIT license
- 设置你的初始化版本为
- 运行
atom
。在你的终端中(terminal)加载你的项目文件夹
文件和文件夹结构
目标
建立一个文件和文件夹结构来使你之后增加更多的复杂性,例如构建和测试系统
解决方案
- 创建两个子文件夹
- src: 将你所有的源代码放到这里
- test: 将你所有的测试代码放在这里
- 在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))
解决方案
- 后端:
- 前端:
- 域名(Domain): Namecheap
- 主机(Hosting): CloudFlare
- Javascript: React
- 使用react-slingshot作为模板。建立一个项目的结构,一个示例应用,并使用Redux作为状态管理系统。
- 样式: Bootstrap
移动端(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:
总结(待完成)
(未完待续…)