SPA前端后端框架简述

最近开发一个单页面应用(Single Page Application), 前端用Vue+Webpack, 后端用Express+Mongodb. 体验了不少新东西, 感受了热更新的高效, 记录一下.

前端框架

这次开发打算上手一下火了很久的Vue, 搜索了一下, 以vuejs-templates/webpack作为基础进行开发. 这是一套已经帮你搭好的脚手架, 包含Webpack, vue-loader和热更新, eslint, 测试.

把这个项目clone下来, 然后按照README进行安装即可.

项目是用Single File Vue Component (单文件Vue组件), 即HTML, JS, CSS集中在一个文件中, 如下形式:

Single File Vue Component

我非常赞同这种形式. 根据长期的开发经验, HTML, JS和CSS本来就应该整体组成一个部件. 之前的项目中使用RequireJS, HTML和JS在同一个目录结构中, 而CSS在另一个近乎一样的平行目录结构中, 添了不少麻烦.

运行npm run dev可以进行本地开发. 由于有热更新, 你在.vue文件中的任何修改, 一旦保存, 会立即更新到浏览器中, 无需刷新, 而且更重要的是, 保持当前页面的状态. 传统开发中, 你修改了代码要刷新才能让新代码生效, 同时页面的状态也丢失了(比方说需要点击10次才能达到的状态). 但是热更新让你可以延续当前页面状态, 无疑大大提高了开发效率.

Webpack的一个小坑

我引入了一个库后一旦npm run dev就提示我Can't resolve 'fs'或者Can't resolve 'child_process', 让我一度丧失对那个库的信心想弃用.

还好后来找到了解决方案, 参考这里, 应该是因为这些库已经是内建在node中的了, 但是webpack还在尝试从node_modules找这些库.

解决方法是在webpack.config.js里面加上

node: {
    fs: 'empty',
    child_process: 'empty'
}

后端框架

Node + ExpressJS

这个是很常见的后端框架了. 按照Express的文档就可以搭建起一个建议的后台, 暴露一些Restful API, 没什么特别的.

MongoDB + Mongoose

之前一直想尝试MongoDB, 这次终于上手了. 这是一个非关系式数据库, 非常灵活. 按照Install MongoDB Community Edition on Windows安装到本地即可.

另外有个配套的GUI, 叫做MongoDB Compass, 装了它可以节约一些查看数据库的时间.

然后少不了的就是Mongoose了, 想在Node中操作MongoDB就需要用到这个中间件.

nodemon

前端有了热更新不能更爽, 后端也应该有. 于是引入了nodemon, 有了它再也不用老ctrl + c了. 它会帮你自动检测后端代码的修改然后自动重启服务器. 开启方式无非就是把node index.js改成nodemon index.js, 非常方便.

杀掉nodemon后重启, 端口总是被占用.

这个问题被讨论挺久的了. 有PR解决这个问题, 希望能够尽快merge.

断点调试

这点还使用得不多. 先是看到网上推荐node-inspector, 然后发现它自己都说已经有更好的解决方案了, 就是Chrome Dev Tool.

Debugging Node.js with Chrome DevTools一文中, Paul Irish大神介绍了使用Chrome DevTools断电调试的方法. 基本就是:

  1. node --inspect index.js
  2. Chrome中访问about:inspect, 它会把你重定向到chrome://inspect
  3. 你看到的应该如下图, 点击那个Target下面的inspect即可.


    chrome://inspect screenshot
  4. 弹出的Chrome DevTools里面可以设置断点.


    image.png

nodemon + Chrome Devtool

运行nodemon --inspect index.js即可. 但是发现nodemon自动重启后, 需要重新在chrome://inspect里面点击一下Inspect才行.

工具库

bluebird

bluebird是一个promise库. 类似的库有jQuery中的Promise和Deferred, Q.

之前一直在用jquery, 现在项目中会用到Q, 再加上网上说bluebird的速度是最快的以及其他若干优点, 于是选择了bluebird.

目前只觉得文档对于新手不大友好(Getting Started约等于没有, 剩下的就是API文档了), 刚一上来会有一些没有头绪.

bluebird在前后端都要用到. 特别指出的是后端Mongoose本身有一个叫做mpromise
的promise库, 但也指出可以使用bluebird作为promise库, 详见这里, 使用方法也很简单.

mongoose.Promise = require('bluebird');
assert.equal(query.exec().constructor, require('bluebird'));

axios

axios是基于Promise的HTTP client, 浏览器和node上都可以运行.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 转载 :OpenDiggawesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库...
    果汁密码阅读 23,083评论 8 124
  • 2016还剩下不到最后的9个小时了,我在阳光灿烂的上海,你在哪里辞旧迎新? 你是否对2017也充满着希望与期待?!...
    心途行者噶玛梅朵阅读 372评论 2 5
  • 从11月6日把《人生规划》写完发到自由人老师qq邮箱后,我不感在做以前的我:好动,勤奋,啥都想做,但从来没用过漂流...
    财富健康1阅读 230评论 0 1
  • 未来总是充满变数,愿你始终心怀梦想,终有归处。 生命总是充满未知,愿你始终坚定努力,无愧于心。 ...
    稻城禾欢阅读 116评论 0 0
  • 又錯過了一趟公交,心裡是不開心的。昨晚想訂鬧鐘確忘記了。很多時候,應該自己去好好把握,不給自己留後路的。以後,不能...
    哭泣的雨傘阅读 223评论 0 0