2017-06-01 from--https://www.v2ex.com/t/365336

如何构建一个中型的web应用(全栈技术)

计算机界的轮子已经如此之多,我的观点是技术不转化成应用是没有价值的,本文主要挑选了一些技术,复用一些优秀的轮子,用最小的成本构建自己的web应用。

主要内容

界面设计

bootstrap twitter出品的响应式框架,可以快速构建优美的前端界面

material-design-lite Google出品的Material Design 风格的前端框架

前端库/框架

jquery 方便快捷地操纵dom

前端构建工具

yog2 百度出品的前端构建工具,将fis3express结合在一起

后端语言

node 用javascript写后端应用

守护进程

pm2 node.js的守护进程,进程挂掉之后自动重启

后端框架

express node.js官方推荐的web框架

koa express原始团队出品,口碑很好,我并没有在实际项目中使用过

数据库

mysql 全球最流行的开源数据库,各大互联网公司都在大范围使用

mongo 时下最流行的nosql数据库,经过几年的发展已经很稳定了

数据库驱动

knex mysql的node.js版的sql构建库,需要搭配mysql的node.js驱动 使用

mongoose mongo的node.js版的数据库驱动

代码部署

ansible 基于ssh的自动化部署工具,我还在摸索的阶段

云主机

ucloud 口碑不错的云服务商

阿里云 阿里巴巴旗下的云服务,号称国内最大

百度云 推荐一下自家公司的产品

CDN

七牛云 老牌云存储服务商,有免费额度

68 回复  |  直到 2017-06-07 12:35:04 +08:00

Reply    1

whileFalse   2017-06-01 23:28:40 +08:00 via iPhone

部署无脑推荐 docker,以及阿里云最近风评不太好啊。

Reply    2

Kilerd   2017-06-01 23:29:31 +08:00

如果是 node 后端的话,没出现 pm2 是不合理的。
界面设计 这里还有很多你想不到的库vue 呢?

所以你这个不存在参考价值。
第一、没列全
第二、不存在对比性

最多只能说是你自己的技术栈而已。

Reply    3

cnnblike   2017-06-01 23:35:44 +08:00   ♥ 1

哇,笑死我了

Reply    4

Yuigahama   2017-06-01 23:44:19 +08:00   ♥ 1

没看懂你这东西的意义在哪
我点进来之前还以为你要给你做出来的网站地址

Reply    5

jellybool   2017-06-01 23:50:25 +08:00 via iPhone

身为一个写 php 的,也是感觉 node 后端没出现 pm2 是不合理的。

Reply    6

peneazy   2017-06-01 23:50:37 +08:00 via Android   ♥ 1

前端库用 jQuery,webpack 有何意义

Reply    7

micean   2017-06-02 00:26:50 +08:00

boostrap 也需要 webpack 之类的吗?
老实说一个独立完成的项目就别整那么复杂
需要那么复杂的项目也别一个人做
自己练手就随意了

Reply    8

skadi   2017-06-02 00:33:57 +08:00 via Android   ♥ 4

完全是在搞笑,标题可以改为“我熟悉的全栈技术”。

Reply    9

AnonymousID   2017-06-02 08:53:44 +08:00

你这写的啥玩意

Reply    10

prasanta   2017-06-02 09:40:17 +08:00

我偏爱 postgresql 胜过 mysql

Reply    11

mlhorizon   2017-06-02 09:44:39 +08:00   ♥ 1

大家还是多点鼓励吧。

Reply    12

bugMaker   2017-06-02 09:50:34 +08:00

@jellybool …出了 pm2 还有 forever, 不用这两个包,启动多个 node 服务监听不同的端口号,让 nginx 做负载均衡也没问题,就是进程挂掉后的重启机制搞不定而已,等 题主做的时候就知道这些东西了

Reply    13

iRiven   2017-06-02 09:53:54 +08:00 via Android

😂支持

Reply    14

joesonw   2017-06-02 09:57:21 +08:00

@bugMaker docker 之间 always-restart 就好了, pm2 重启又不干净

Reply    15

jalena   2017-06-02 09:57:37 +08:00

尼玛,一打开就看到 bootstrap 拼写错了!

Reply    16

lianxiaoyi   2017-06-02 10:08:59 +08:00

ucloud 口碑不错的云服务商

Reply    17

learnshare   2017-06-02 10:15:24 +08:00

jQuery 没错,但不应该是唯一推荐吧

Reply    18

polun   2017-06-02 10:23:12 +08:00

(mini)Awsome XX

Reply    19

arnoldnuo   2017-06-02 10:42:59 +08:00

@whileFalse 我也觉得 docker 是一个用来部署的好工具,不过我还没研究明白,所以没往上放。阿里云最近风评是不好,但是毕竟还算是国内最大最成熟的,所以想了想还是放上来了。

Reply    20

arnoldnuo   2017-06-02 10:46:23 +08:00

@Kilerd 的确是就写的我自己的技术栈,当初写的目的是为了给大家一个无脑的选择,只要学习这些,就能搞一个应用出来。守护进程这一项我忘记了加了,该把 pm2 放进去的,没打算加 vue,看来我也应该把 webpack 去掉,有点多余了

Reply    21

arnoldnuo   2017-06-02 10:46:42 +08:00

@cnnblike 咋了?

Reply    22

arnoldnuo   2017-06-02 10:48:10 +08:00

@Yuigahama 目的是为了搞一个完成应用的最小技术栈,拒绝选择困难症,先把产品搞出来才是正经事

Reply    23

arnoldnuo   2017-06-02 10:48:55 +08:00

@jellybool 忘了写了,该加进去,可惜 V2EX 无法编辑自己的帖子

Reply    24

Jakesoft   2017-06-02 10:49:52 +08:00

看一下我用了什么技术栈:

https://www.geekerism.com

Reply    25

arnoldnuo   2017-06-02 10:52:59 +08:00

@peneazy 说的有道理,我把 webpack 给干掉了

Reply    26

arnoldnuo   2017-06-02 10:53:24 +08:00

@micean 有道理,我把 webpack 干掉了

Reply    27

arnoldnuo   2017-06-02 10:53:58 +08:00

@skadi 你这标题起的好啊,🙏

Reply    28

arnoldnuo   2017-06-02 10:54:28 +08:00

@prasanta 最近 postgresql 挺火,不过我还没用过

Reply    29

arnoldnuo   2017-06-02 10:54:50 +08:00

@mlhorizon 😢😢😢,终于有人鼓励了

Reply    30

cnnblike   2017-06-02 10:59:01 +08:00

@arnoldnuo
1. JQuery+webpack?这个思路有点神秘。
2. 这眼看都 2017 年了,居然没有 docker。可以说是非常真实了。
3. mysql 而不是 postgres,真实。

Reply    31

caniuse   2017-06-02 11:20:29 +08:00

react antd webpack laravel

Reply    32

Daming   2017-06-02 11:31:32 +08:00

没 vue,差评

Reply    33

arnoldnuo   2017-06-02 14:31:59 +08:00

@bugMaker 我现在用的就是 forever,因为 pm2 的授权协议,导致没法用 pm2,不过还是挺想把 pm2 重新拾起来的

Reply    34

arnoldnuo   2017-06-02 14:32:34 +08:00

@jalena 不好意思,😅,丢了个 t,v2ex 没法该帖子

Reply    35

arnoldnuo   2017-06-02 14:32:56 +08:00

@lianxiaoyi 嗯,我好多出去创业的同事都用 ucloud

Reply    36

arnoldnuo   2017-06-02 14:33:41 +08:00

@learnshare 主要想搞一个最小的推荐集合,react、vue、angular 上手难度会高一些

Reply    37

arnoldnuo   2017-06-02 14:34:21 +08:00

@polun Awsome Web Tech

Reply    38

arnoldnuo   2017-06-02 14:35:00 +08:00

@Jakesoft 看不出来,感觉你这搞一个 Html 就可以了

Reply    39

arnoldnuo   2017-06-02 14:37:36 +08:00

@cnnblike 1. 的确不合适,所以我把 webpack 去掉了; 2. docker 我还没搞明白,目前用 ansible 部署,问题不大; 3. 目前 mysql 的学习材料比 postgresql 多太多了,使用的成熟程度也要高不少,所以没把 postgresql 放上去,我觉得自己还搞不定 postgresql

Reply    40

robinshi2010   2017-06-02 15:00:30 +08:00

最小技术栈需要列这么长那可就坏事儿了。

Reply    41

arnoldnuo   2017-06-02 15:03:02 +08:00

@robinshi2010 哪个可以去掉呢?感觉去掉任意一项都会有问题吧,我倒是想再精简一些,请指教

Reply    42

Sapp   2017-06-02 16:19:14 +08:00

你应该加个前提,[后端程序员的]。你这个明显一看就是后端搞出来给后端用的。

Reply    43

xiaket   2017-06-02 17:56:51 +08:00

什么叫 postgres 最近很火…….. 是您最近才知道这东西?

Reply    44

arnoldnuo   2017-06-02 20:29:26 +08:00

@xiaket 嗯,的确是最近才知道的,一直用的都是 mysql

Reply    45

arnoldnuo   2017-06-02 20:30:38 +08:00

@Sapp 我干了两年前端,去年才转后端,目前觉得后端的东西很多复杂性无法避开,但是前端用 jquery 搞一些简单页面是没问题的

Reply    46

Phariel   2017-06-02 20:39:46 +08:00 via Android   ♥ 1

Reply    47

Sapp   2017-06-02 21:00:36 +08:00

@arnoldnuo 我觉得楼上的图很适合你… jquery 确实能做,但是现在前端谁还用你那一套?我刚入行的时候差不多用的是你这样,早就被淘汰了。甚至可以说这个前端技术栈已经找不到工作了,当后端就好好当后端,别说什么全栈了。

Reply    48

coderfox   2017-06-02 21:26:34 +08:00 via Android

数据库驱动我推荐 TypeORM (支持 MySQL、SQLite、MS SQL )。

Reply    49

billwang   2017-06-02 21:38:12 +08:00

不明白写这些是干啥用的,科普?

Reply    50

arnoldnuo   2017-06-02 21:40:44 +08:00

@Sapp 我主要是没有找到 vue、react 技术栈针对 seo 处理的比较好的方案,如果使用 vue、react 这些技术,会导致爬虫无法识别内容。我们只有后台应用才用这些技术,对于面向用户的产品,还是用后端拼接模版的方式,还是为了 seo 考虑。

Reply    51

arnoldnuo   2017-06-02 21:45:57 +08:00

@billwang 嗯,科普,避免选择困难症

Reply    52

peneazy   2017-06-02 22:02:36 +08:00 via Android

seo 可以做。。

Reply    53

metrue   2017-06-02 22:08:05 +08:00

不知道列举这些东西有什么用….

Reply    54

snailsir   2017-06-02 22:12:32 +08:00

一个 php 脚本,一个 html 模版页,几行 css,一个 markdown 目录,对,就是这个 http://www.dingzhihao.org

Reply    55

likezun   2017-06-02 22:19:57 +08:00

哇,我只喷下 node。。。

喷 jquery 的人简直了,vue、react 根本就是大厂的玩具和试验品, 根本比不了 jquery 的意义 !

Reply    56

Miy4mori   2017-06-03 13:45:46 +08:00 via iPhone

本来想说点啥的,一看楼主是前端转后端,加油吧,知识面太窄学不好后端的。

Reply    57

doubleflower   2017-06-03 15:49:25 +08:00

bootstrap + jquery 这种十年前的技术对于写个交互很少的博客来说还是能用的。
不过 LZ 是要构建一个中型的 web 应用。。。

Reply    58

rubyvector   2017-06-03 16:21:18 +08:00

jquery 的基础地位不是新框架能比的。框架已经包含了基础样式及开发构架,更多地是加快开发速度,react 等 新框架也是在工程管理上下了工夫,以便构建大型的,复杂的前端界面。

Reply    59

rotoava   2017-06-03 23:02:43 +08:00

CDN: 又拍
存储:aws s3,又拍 ,ali oss
云主机:aws,linode, ali
日志监控:ELK
消息中间件:kafka
反向代理:nginx
https 证书:letencrypt
任督二脉:HTTP 协议另外咨询一下:node 应用常驻后台是用什么方案?

Reply    60

ClassicOldSong   2017-06-04 02:26:54 +08:00

来,送你一块砖头🌑

Reply    61

wemore   2017-06-04 11:25:25 +08:00 via Android

前几天参加学校的比赛,大部分做网站的用的是 bootstrap+jq😂😂(我也是)

Reply    62

smallpath   2017-06-04 12:05:33 +08:00 via Android

@arnoldnuo mvvm 的服务端渲染我都有用了十个月了

Reply    63

skadi   2017-06-04 12:41:53 +08:00

Reply    64

Sapp   2017-06-04 13:21:18 +08:00

@arnoldnuo react vue 解决不了 seo ?都说了,做后端就好好做,别扯什么全栈,知识面太窄。

Reply    65

abcbuzhiming   2017-06-04 16:42:32 +08:00

@cnnblike 别的不谈,我只想知道这种看不起 Mysql 猛吹 PostgreSQL 的风气到底是咋回事

Reply    66

cnnblike   2017-06-05 04:35:49 +08:00

@abcbuzhiming mysql 有些东西做不到,之前很长一段时间 json 类型只能存字符串,两三个月前还不支持 CTE,就算你用不到,postgres 也会比 mysql 性能好。Amazon Redshift 是 postgres 兼容的,就是说,你后期如果这个中等规模的项目要变成大规模项目的话,迁移也方便很多。
吹 postgres 是有理有据的,不知道当然可以问,但是麻烦语气好点,成不?

Reply    67

arnoldnuo   2017-06-05 11:12:16 +08:00

@rotoava 常驻后台用 pm2,已经更新到 github 上去了,v2ex 没法改帖子

Reply    68

aroa   2017-06-07 12:35:04 +08:00

jQuery 挺好的