转自: https://www.jianshu.com/p/1f809e1aff66
前言
从2016年5月份开始,接触Node.js到现在已经有一年半的时间了。从最初的懵懵懂懂,到一篇一篇地啃大部头、看教程,再到自己开始写笔记、写教程,以及上手做了一些小功能,最终到部署自己的网站到云服务器上。
中间踩过坑(MongoDB基础X——踩过的坑以及解决方案),也走过弯路;为此付出过代价,也绞尽脑汁去解决。但总的来说,还算一路顺利。而当饱含自己心血的作品真正部署在了云服务并正常运行的时候,那份激动真的没法用语言来描述。
当知识积累到一定程度后,我希望能分享给新人们,让他们少走一些弯路,让他们能更快地上手、做出更多酷炫的作品来;于是我在简书创建了一个专题,把我的经验、我收集的资料以及其他人的经验都呈现给大家。>>>> 移步【Node.js专题】
最后,向大家推荐我的网站:
- OneLib智库。这是我的博客,也是我发布最新资料的地方,欢迎大家留言和讨论。
- 爱吐纳。这是我为林明老师做的网站,主要服务于高中学生和教师。
- 工具集。这是我的工具集,提供了IP查询、火车票查询、图片解析、颜色等工具。
- 汤圆直播。这是我做的一个简易直播网站,使用的是RTMP协议进行推流;不过不幸的是,.live域名无法备案,已经被阿里云和谐了。
我的github是 https://github.com/KKDestiny , 欢迎fork和star。
我的个人网站是 https://www.linxiaozhou.com:666
1.服务器部署
1.1 部署网站服务器
《在腾讯云/阿里云Ubuntu系统安装Node.js及运行环境》
很多人在开始学习伊始,碰到了部署服务器的麻烦,导致最终放弃了学习;事实上,在linux服务器上部署一个node.js服务是一件很简单的事。这篇文章介绍了如何在linux环境和Windows环境中部署一个node.js、npm及网站运行环境,并介绍了一些问题及如何解决。
1.2 部署Git服务器
《干货 | 简单几步搭建一个远程git服务器》
github是一个很厉害的东西,不过讲道理,有些代码是不能随便公开的;而你又希望使用git管理代码,且希望不论在家还是在公司,都能随时拉取和推送代码。这时候,你需要一个服务器,以及搭建一个简单的git服务器。这篇文章介绍了如何部署一个私人的git服务器,并使用私钥来验证身份。
1.3 域名和证书
《未来已来!免费数字证书使你的node.js服务器支持https》
SSL数字签名实现网站的HTTPS化,可以使网站可信,防劫持、防篡改、防窃听,是未来网站安全的发展趋势。这篇文章将告诉你如何以个人的名义申请SSL数字证书,并部署在node.js服务器上。
2.数据库部署
2.1 MongoDB的部署和使用
这里给出了一个学习系列资料,从安装到使用,到备份和还原,入门必看!
- MongoDB基础0——MongoDB的安装与可视化管理工具
- MongoDB基础1——数据库基本操作
- MongoDB基础2——Mongoose的操作指南
- MongoDB基础3——Mongoose的数据交互问题
- MongoDB基础4——安全与身份认证
- MongoDB基础X——踩过的坑以及解决方案(持续更新中)
- MongoDB基础5——备份与恢复
2.2 Redis的部署
《Node.js的Redis简单例子》
这篇文章主要介绍了如何在Windows和linux环境中安装Redis,并给出了一个nodejs的使用例子。
2.3 Mysql操作
3.运维与管理
3.1 代理
《http-proxy反向代理以调度服务器各app》
当我们的网站由PHP、Node.js和JavaWeb等应用组合起来时,就会面临80端口究竟给谁用的问题,谁都不愿意访问自己的网站的时候还要加个端口号。这时候,就需要用一个反向代理来进行调度;Nginx是一个很好的选择,不过,用node.js似乎更容易上手。这篇文章就是使用node.js的一个应用来代理各个服务的。
3.2 管理服务
《详细版 | 用Supervisor守护你的Node.js进程》
在我们初学node时,启动命令一般是node myapp
,每次修改好代码后,还得先停止应用,然后重启。Supervisor是一个管理node服务的小工具,它能监控代码的变化,一旦代码有变化,它就能自动重启;它比较适合在开发过程中。在实际部署时,推荐使用pm2。
《用pm2管理node.js应用》
在部署了多个node.js应用后,我们还会面临多个应用管理不方便、需要来回切换命令行的窘境。为了解决这个问题,我决定使用pm2来管理所有node.js应用。
3.3 资源同步
《用sftp管理你的linux服务器》
因为服务器一般是用linux,我们开发则一般用Windows或mac,因此如何把代码同步到服务器是一个大问题;直接在服务器安装一个git来同步当然可以,但有时候我们想把代码或资源从服务拉回本地,就比较麻烦了。这篇文章介绍了如何通过sftp来更便捷地进行这些操作,只要你的服务器支持ssh,就可以进行这样的操作。通过sftp,你甚至不需要什么samba、ftp;毕竟这些服务既不方便安装,又是不安全因素。
4. 代码风格
《使用Async,让你的Node.js代码更优雅》
node.js在书写时最大的毛病就是异步函数,如果写得不好,就会嵌套一堆代码;使用Async可以有效避免这种情况。
5.学习资料与框架
5.1 基础知识
关于node.js的基础知识,我建议各位从最简单的教程开始看,这里推荐 菜鸟教程。
一些权威网站的网址:
- Node.js官网
- Express官网:系统地学习Express框架
- Node.js API文档:Node.js的接口文档
以下为我写的一些资料,如果有不明白的可以先看看:
我收集的一些资料:
5.2 一些小功能、小应用
- 《Node.js通过微信网页授权机制获取用户信息》
- 《Node.js接入微信公众平台后台》
- 《Node.js使用NodeMailer发送邮件》
- 《Node.js断点下载和多线程下载原理》
- 《Node.js(Express4.x)搭建聊天室》
- 《用Node.js做一个火车票查询小工具》
- 《RSA签名与验证》
- 《使用lazyload延迟加载图片来缓解服务器压力》
- 《jsPDF将HTML转为PDF文件》
- 《截屏粘贴到编辑器并自动上传》
附2:组件介绍
《干货 | Node.js有用的功能组件》
本文介绍了我在开发过程中所使用到的一些node.js中间件,如数据库中间件mongoose、redis,发送邮件的Nodemailer,视频处理的ffmpeg,文件(夹)压缩的archiver,签名和校验的crypto,等等。
结语
在一个月前,我开始接触Electron。这是一个跨平台的客户端开发工具,使用的是Node.js技术。我们只需要使用一种语言(javascript),就可以编译出Windows、linux和macos版的客户端,没错,客户端!
Electron 是一个使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用。你只要会node.js及相关技术,你就能做出以前只有会MFC、VS甚至Mac开发的程序员才能做的产品。其中代表作品包括Github客户端、优秀的编辑器Atom、Flow等。
Electron为我们做node.js开发的程序员打开了一扇全新世界的大门。从此,我们不再是跑在云上的虚幻的程序员,我们也能实实在在地开发出各种小工具出来!我将在简书的专题中同步
当然,千里之行,始于足下;在此之前,必须先把node.js甚至更基础的javascript学好,否则一切都是沙土中建高楼,根基不稳。
最后,祝愿每一个程序员都能找到自己的人生。
文 / 林晓州