V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
arnoldnuo
V2EX  ›  Node.js

写了一个一个人独立搞定 web 网站的技术选型列表,欢迎拍砖

  •  3
     
  •   arnoldnuo · 2017-06-01 23:11:51 +08:00 · 9824 次点击
    这是一个创建于 2730 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    主要内容

    界面设计

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

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

    前端库 /框架

    jquery 方便快捷地操纵 dom

    前端构建工具

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

    webpack 当下最火的前端构建工具

    后端语言

    node 用 javascript 写后端应用

    后端框架

    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

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

    原文地址: https://github.com/Arnoldnuo/how-to-make-web-app

    68 条回复    2017-06-07 12:35:04 +08:00
    whileFalse
        1
    whileFalse  
       2017-06-01 23:28:40 +08:00 via iPhone
    部署无脑推荐 docker,以及阿里云最近风评不太好啊。
    Kilerd
        2
    Kilerd  
       2017-06-01 23:29:31 +08:00
    如果是 node 后端的话,没出现 pm2 是不合理的。
    界面设计 这里还有很多你想不到的库

    vue 呢?

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

    最多只能说是你自己的技术栈而已。
    cnnblike
        3
    cnnblike  
       2017-06-01 23:35:44 +08:00   ❤️ 1
    哇,笑死我了
    Yuigahama
        4
    Yuigahama  
       2017-06-01 23:44:19 +08:00   ❤️ 1
    没看懂你这东西的意义在哪
    我点进来之前还以为你要给你做出来的网站地址
    jellybool
        5
    jellybool  
       2017-06-01 23:50:25 +08:00 via iPhone
    身为一个写 php 的,也是感觉 node 后端没出现 pm2 是不合理的。
    peneazy
        6
    peneazy  
       2017-06-01 23:50:37 +08:00 via Android   ❤️ 1
    前端库用 jQuery,webpack 有何意义
    micean
        7
    micean  
       2017-06-02 00:26:50 +08:00
    boostrap 也需要 webpack 之类的吗?
    老实说一个独立完成的项目就别整那么复杂
    需要那么复杂的项目也别一个人做
    自己练手就随意了
    skadi
        8
    skadi  
       2017-06-02 00:33:57 +08:00 via Android   ❤️ 4
    完全是在搞笑,标题可以改为“我熟悉的全栈技术”。
    AnonymousID
        9
    AnonymousID  
       2017-06-02 08:53:44 +08:00
    你这写的啥玩意
    prasanta
        10
    prasanta  
       2017-06-02 09:40:17 +08:00
    我偏爱 postgresql 胜过 mysql
    mlhorizon
        11
    mlhorizon  
       2017-06-02 09:44:39 +08:00   ❤️ 1
    大家还是多点鼓励吧。
    bugMaker
        12
    bugMaker  
       2017-06-02 09:50:34 +08:00
    @jellybool ...出了 pm2 还有 forever, 不用这两个包,启动多个 node 服务监听不同的端口号,让 nginx 做负载均衡也没问题,就是进程挂掉后的重启机制搞不定而已,等 题主做的时候就知道这些东西了
    iRiven
        13
    iRiven  
       2017-06-02 09:53:54 +08:00 via Android
    😂支持
    joesonw
        14
    joesonw  
       2017-06-02 09:57:21 +08:00
    @bugMaker docker 之间 always-restart 就好了, pm2 重启又不干净
    jalena
        15
    jalena  
       2017-06-02 09:57:37 +08:00
    尼玛,一打开就看到 bootstrap 拼写错了!
    lianxiaoyi
        16
    lianxiaoyi  
       2017-06-02 10:08:59 +08:00
    ucloud 口碑不错的云服务商
    learnshare
        17
    learnshare  
       2017-06-02 10:15:24 +08:00
    jQuery 没错,但不应该是唯一推荐吧
    polun
        18
    polun  
       2017-06-02 10:23:12 +08:00
    (mini)Awsome XX
    arnoldnuo
        19
    arnoldnuo  
    OP
       2017-06-02 10:42:59 +08:00   ❤️ 1
    @whileFalse 我也觉得 docker 是一个用来部署的好工具,不过我还没研究明白,所以没往上放。阿里云最近风评是不好,但是毕竟还算是国内最大最成熟的,所以想了想还是放上来了。
    arnoldnuo
        20
    arnoldnuo  
    OP
       2017-06-02 10:46:23 +08:00   ❤️ 1
    @Kilerd 的确是就写的我自己的技术栈,当初写的目的是为了给大家一个无脑的选择,只要学习这些,就能搞一个应用出来。守护进程这一项我忘记了加了,该把 pm2 放进去的,没打算加 vue,看来我也应该把 webpack 去掉,有点多余了
    arnoldnuo
        21
    arnoldnuo  
    OP
       2017-06-02 10:46:42 +08:00   ❤️ 1
    @cnnblike 咋了?
    arnoldnuo
        22
    arnoldnuo  
    OP
       2017-06-02 10:48:10 +08:00   ❤️ 1
    @Yuigahama 目的是为了搞一个完成应用的最小技术栈,拒绝选择困难症,先把产品搞出来才是正经事
    arnoldnuo
        23
    arnoldnuo  
    OP
       2017-06-02 10:48:55 +08:00   ❤️ 1
    @jellybool 忘了写了,该加进去,可惜 V2EX 无法编辑自己的帖子
    Jakesoft
        24
    Jakesoft  
       2017-06-02 10:49:52 +08:00
    看一下我用了什么技术栈:

    https://www.geekerism.com

    arnoldnuo
        25
    arnoldnuo  
    OP
       2017-06-02 10:52:59 +08:00   ❤️ 1
    @peneazy 说的有道理,我把 webpack 给干掉了
    arnoldnuo
        26
    arnoldnuo  
    OP
       2017-06-02 10:53:24 +08:00   ❤️ 1
    @micean 有道理,我把 webpack 干掉了
    arnoldnuo
        27
    arnoldnuo  
    OP
       2017-06-02 10:53:58 +08:00   ❤️ 1
    @skadi 你这标题起的好啊,🙏
    arnoldnuo
        28
    arnoldnuo  
    OP
       2017-06-02 10:54:28 +08:00   ❤️ 1
    @prasanta 最近 postgresql 挺火,不过我还没用过
    arnoldnuo
        29
    arnoldnuo  
    OP
       2017-06-02 10:54:50 +08:00   ❤️ 1
    @mlhorizon 😢😢😢,终于有人鼓励了
    cnnblike
        30
    cnnblike  
       2017-06-02 10:59:01 +08:00
    @arnoldnuo
    1. JQuery+webpack?这个思路有点神秘。
    2. 这眼看都 2017 年了,居然没有 docker。可以说是非常真实了。
    3. mysql 而不是 postgres,真实。
    caniuse
        31
    caniuse  
       2017-06-02 11:20:29 +08:00
    react antd webpack laravel
    Daming
        32
    Daming  
       2017-06-02 11:31:32 +08:00
    没 vue,差评
    arnoldnuo
        33
    arnoldnuo  
    OP
       2017-06-02 14:31:59 +08:00   ❤️ 1
    @bugMaker 我现在用的就是 forever,因为 pm2 的授权协议,导致没法用 pm2,不过还是挺想把 pm2 重新拾起来的
    arnoldnuo
        34
    arnoldnuo  
    OP
       2017-06-02 14:32:34 +08:00   ❤️ 1
    @jalena 不好意思,😅,丢了个 t,v2ex 没法该帖子
    arnoldnuo
        35
    arnoldnuo  
    OP
       2017-06-02 14:32:56 +08:00   ❤️ 1
    @lianxiaoyi 嗯,我好多出去创业的同事都用 ucloud
    arnoldnuo
        36
    arnoldnuo  
    OP
       2017-06-02 14:33:41 +08:00   ❤️ 1
    @learnshare 主要想搞一个最小的推荐集合,react、vue、angular 上手难度会高一些
    arnoldnuo
        37
    arnoldnuo  
    OP
       2017-06-02 14:34:21 +08:00   ❤️ 1
    @polun Awsome Web Tech
    arnoldnuo
        38
    arnoldnuo  
    OP
       2017-06-02 14:35:00 +08:00   ❤️ 1
    @Jakesoft 看不出来,感觉你这搞一个 Html 就可以了
    arnoldnuo
        39
    arnoldnuo  
    OP
       2017-06-02 14:37:36 +08:00   ❤️ 1
    @cnnblike 1. 的确不合适,所以我把 webpack 去掉了; 2. docker 我还没搞明白,目前用 ansible 部署,问题不大; 3. 目前 mysql 的学习材料比 postgresql 多太多了,使用的成熟程度也要高不少,所以没把 postgresql 放上去,我觉得自己还搞不定 postgresql
    robinshi2010
        40
    robinshi2010  
       2017-06-02 15:00:30 +08:00
    最小技术栈需要列这么长那可就坏事儿了。
    arnoldnuo
        41
    arnoldnuo  
    OP
       2017-06-02 15:03:02 +08:00   ❤️ 1
    @robinshi2010 哪个可以去掉呢?感觉去掉任意一项都会有问题吧,我倒是想再精简一些,请指教
    Sapp
        42
    Sapp  
       2017-06-02 16:19:14 +08:00
    你应该加个前提,[后端程序员的]。你这个明显一看就是后端搞出来给后端用的。
    xiaket
        43
    xiaket  
       2017-06-02 17:56:51 +08:00
    什么叫 postgres 最近很火........ 是您最近才知道这东西?
    arnoldnuo
        44
    arnoldnuo  
    OP
       2017-06-02 20:29:26 +08:00   ❤️ 1
    @xiaket 嗯,的确是最近才知道的,一直用的都是 mysql
    arnoldnuo
        45
    arnoldnuo  
    OP
       2017-06-02 20:30:38 +08:00   ❤️ 1
    @Sapp 我干了两年前端,去年才转后端,目前觉得后端的东西很多复杂性无法避开,但是前端用 jquery 搞一些简单页面是没问题的
    Phariel
        46
    Phariel  
       2017-06-02 20:39:46 +08:00 via Android   ❤️ 1
    Sapp
        47
    Sapp  
       2017-06-02 21:00:36 +08:00
    @arnoldnuo 我觉得楼上的图很适合你... jquery 确实能做,但是现在前端谁还用你那一套?我刚入行的时候差不多用的是你这样,早就被淘汰了。甚至可以说这个前端技术栈已经找不到工作了,当后端就好好当后端,别说什么全栈了。
    coderfox
        48
    coderfox  
       2017-06-02 21:26:34 +08:00 via Android
    数据库驱动我推荐 TypeORM (支持 MySQL、SQLite、MS SQL )。
    billwang
        49
    billwang  
       2017-06-02 21:38:12 +08:00
    不明白写这些是干啥用的,科普?
    arnoldnuo
        50
    arnoldnuo  
    OP
       2017-06-02 21:40:44 +08:00   ❤️ 1
    @Sapp 我主要是没有找到 vue、react 技术栈针对 seo 处理的比较好的方案,如果使用 vue、react 这些技术,会导致爬虫无法识别内容。我们只有后台应用才用这些技术,对于面向用户的产品,还是用后端拼接模版的方式,还是为了 seo 考虑。
    arnoldnuo
        51
    arnoldnuo  
    OP
       2017-06-02 21:45:57 +08:00   ❤️ 1
    @billwang 嗯,科普,避免选择困难症
    peneazy
        52
    peneazy  
       2017-06-02 22:02:36 +08:00 via Android
    seo 可以做。。
    metrue
        53
    metrue  
       2017-06-02 22:08:05 +08:00
    不知道列举这些东西有什么用....
    snailsir
        54
    snailsir  
       2017-06-02 22:12:32 +08:00
    一个 php 脚本,一个 html 模版页,几行 css,一个 markdown 目录,对,就是这个 http://www.dingzhihao.org
    likezun
        55
    likezun  
       2017-06-02 22:19:57 +08:00
    哇,我只喷下 node。。。

    喷 jquery 的人简直了,vue、react 根本就是大厂的玩具和试验品, 根本比不了 jquery 的意义 !
    Miy4mori
        56
    Miy4mori  
       2017-06-03 13:45:46 +08:00 via iPhone
    本来想说点啥的,一看楼主是前端转后端,加油吧,知识面太窄学不好后端的。
    doubleflower
        57
    doubleflower  
       2017-06-03 15:49:25 +08:00
    bootstrap + jquery 这种十年前的技术对于写个交互很少的博客来说还是能用的。
    不过 LZ 是要构建一个中型的 web 应用。。。
    rubyvector
        58
    rubyvector  
       2017-06-03 16:21:18 +08:00
    jquery 的基础地位不是新框架能比的。框架已经包含了基础样式及开发构架,更多地是加快开发速度,react 等 新框架也是在工程管理上下了工夫,以便构建大型的,复杂的前端界面。
    rotoava
        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 应用常驻后台是用什么方案?
    ClassicOldSong
        60
    ClassicOldSong  
       2017-06-04 02:26:54 +08:00
    来,送你一块砖头🌑
    wemore
        61
    wemore  
       2017-06-04 11:25:25 +08:00 via Android
    前几天参加学校的比赛,大部分做网站的用的是 bootstrap+jq😂😂(我也是)
    smallpath
        62
    smallpath  
       2017-06-04 12:05:33 +08:00 via Android
    @arnoldnuo mvvm 的服务端渲染我都有用了十个月了
    skadi
        63
    skadi  
       2017-06-04 12:41:53 +08:00
    Sapp
        64
    Sapp  
       2017-06-04 13:21:18 +08:00
    @arnoldnuo react vue 解决不了 seo ?都说了,做后端就好好做,别扯什么全栈,知识面太窄。
    abcbuzhiming
        65
    abcbuzhiming  
       2017-06-04 16:42:32 +08:00
    @cnnblike 别的不谈,我只想知道这种看不起 Mysql 猛吹 PostgreSQL 的风气到底是咋回事
    cnnblike
        66
    cnnblike  
       2017-06-05 04:35:49 +08:00
    @abcbuzhiming mysql 有些东西做不到,之前很长一段时间 json 类型只能存字符串,两三个月前还不支持 CTE,就算你用不到,postgres 也会比 mysql 性能好。Amazon Redshift 是 postgres 兼容的,就是说,你后期如果这个中等规模的项目要变成大规模项目的话,迁移也方便很多。
    吹 postgres 是有理有据的,不知道当然可以问,但是麻烦语气好点,成不?
    arnoldnuo
        67
    arnoldnuo  
    OP
       2017-06-05 11:12:16 +08:00   ❤️ 1
    @rotoava 常驻后台用 pm2,已经更新到 github 上去了,v2ex 没法改帖子
    aroa
        68
    aroa  
       2017-06-07 12:35:04 +08:00
    jQuery 挺好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5561 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:05 · PVG 11:05 · LAX 19:05 · JFK 22:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.