- 技术选型
- 项目结构
1. 闲言碎语
从大学毕业到现在,已经做了6年不称职的程序员了。如果算上大学4年那就是10年了。从第一个Visual C++ 6.0版本的HelloWorld,到现在的什么都会点,什么都尝试了,语言用过C/C++/C#/VB/Java/PHP/Python/JavaScript,平台做过PC/Web Application/Android/iOS/WindowsPhone/微信小程序/uni-app/单片机,还有爬虫和机器学习,已经10年了。
这么说来我还是挺牛逼的,可是除了Android做的久点,其它都一般般。我在想,自已到底在追求的是什么?想来想去,是懒,想要一门可以独步天下的编程语言和技术栈。大学就学过JavaScript,一直到前两年才发现它是多么的友善,无类型定义,老师一直强调的分号都可以不要。最初是拿来做微信小程序的,做了几个,然后就爱上了这门语言,可是想要精通起来有点难,难的不是语法概念,是编程理念,太灵活了。后为用Django+Vue.js做了一个前后端分离的域名售卖网站。再后来是发觉了uni-app这个逆天,做了一个社交app,结果没上线,哎。
最近呢,有点手痒,想做一个全平台的东西,自然就想到了JavaScript,服务端可以Node.js,前端可以Vue.js,移动端可以uni-app,覆盖全平台,全终端,堪称超级完美!可是还没用过Node.js啊,怎么办?学呗。然后就有了此文。
2. 基本概念
- Node.js:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时。Node.js作为一个JavaScript运行时,提供了http/net/fs/buffer/stream等模块,弥补了JavaScript作为服务器语言的缺陷,使得其可以满足网络操作,文件操作等的需要。有了Node.js你就可以向Python一样在REPL环境下使用JavaScript了。
- Express:Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架。JT大神的第一作。包括路由、模板、工具类,庞大臃肿,适合快速开始。可类比Python的Django。
- Koa:Koa -- 基于 Node.js 平台的下一代 web 开发框架。JT大神的第二作,基于generator/yield。
- Koa2:Koa -- 基于 Node.js 平台的下一代 web 开发框架。JT大神的第三作,灵活,实际是基于ES7的Koa升级版,基于async/await。可类比Python的Flask。
- EJS:高效的嵌入式 JavaScript 模板引擎。简单简洁,学习成本低。
- Jade:JADE LANGUAGE Node Template Engine. 新的缩进式语法,功能丰富,模板继承,但学习成本高。
- Pug:Jade的改名版本,Jade名字侵权换名了,也算是最新的Jade吧。
- MySql:The world's most popular open source database. 免费好用的关系型数据库管理系统,关系型DBMS。
- MongoDB:MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. 基于分布式文件存储的数据库。最像关系型数据库的非关系型数据库。
- Sequelize:Sequelize 是一个基于 promise 的 Node.js ORM, 目前支持 [Postgres],(https://en.wikipedia.org/wiki/PostgreSQL), MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 和MySQL搭配的ORM框架。
- Mongoose:elegant mongodb object modeling for node.js. 和MongoDB搭配的ORM框架。
- Redis:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. 数据缓存。
- JWT:JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. 比Session/Cookie更高效的鉴权方案。
- Vue.js:渐进式JavaScript 框架。让你更加方便的实现前后端分离,用就对了。
- Bootstrap:简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。老牌前端UI框架,放心。本来是想用ElementUI的,饿了么团队开源的,结果一查没在维护了。
3. 选型确定
我比较喜欢简单的、大众的、新鲜的东西,所以最终选择:
后端:Node.js + Koa2 + EJS + MongoDB + Mongoose + Redis + JWT
前端:Vue.js + Bootstrap
好啦,就到这里吧。技术选型完了,下一步就是怎么把这些框架给整合在一起,怎么配置项目结构。总的原则就是“高内聚,低耦合”。
网友评论