nodejs初体验

使用node制做我的博客


明确目标

  • 选择先后端框架。使用express做为服务端的框架,使用jade制做前端模板
  • 选择数据库。链接到mongDb数据库以及mySQL数据库,并实现增、删、改、查功能
  • 进阶优化
    • 开发时,纯前端的思惟再也不管用,替换为: 前端只管理模板以及样式,后端负责其余操做,而且出了bug服务就挂了…
    • 使用express时,如何设置router控制器目录结构能够优化
    • 使用express时,控制器的做用与页面模板紧密相连,接口类型只有get以及post类型,主要做用于表单交互
    • 使用express时,难点在于对中间件概念的理解,以达到统一管理错误日志,统一管理服务器日志,确保页面可访问以及session安全性
    • 使用mongDb时,难点在于:建模,肯定模型初始数据结构以及模型拥有的方法(便于调用)
    • 使用mongDb时,难点在于:调用接口时,须要对数据进行增删改查,数据库的操做方法须要十分熟练
    • 书写前端模板时,使用了jade,须要有less或者sass经验,上手很快
  • 注意事项
    • 书写前端模板时,能够不使用模板直接写普通html。使用jade须要有less或者sass经验,上手很快
    • 在jade模板中服用模板无需经验,优化模板的复用程度须要经验,慢慢来
    • 在jade中写js, script. 后面有个点

express注意事项

注意 解释
初始化项目 想使用node写个小项目,初始化项目时无从下手,使用通用的express项目生成工具express-generator
启动项目 如何启动项目参考express-generator文档,很是简单。可是这样没法作到修改文件后,自动重启服务器更新文件内容。使用大神之做nodemon。 固然你也能够参考这个项目node-blog
设置路由 路由须要统一管理,参见项目 node-blog中router

mongDB注意事项

- 初始化数据库。建立 mondodb.js 文件,进行数据库连接的初始化操做
- 连接数据库,在app.js入口文件中引入 mondodb.js 文件便可
    require('./mongodb/mongodb.js')
- 数据建模。model文件夹专门存放数据模型
- 在接口文件中使用。导出模型,调用模型操做方法

经验技巧

node-blog自动重启服务器
第一步,建立nodemon.json文件。
第二步,改写pakage.json文件,添加script中这一句 html

"description": "...",
  "scripts": {
    "dev": "nodemon --debug ./bin/www"
    ......
  },
  "dependencies": {...}

第三步,重启服务器,npm run dev, 大功告成前端

使用ES6语法node

// 安装babel-core,而后在api.js中添加上这一句便可
require("babel-core/register")

通用配置集中管理 config.jsmysql

module.exports = {
    port: process.env.PORT ? process.env.PORT: 3004, // 端口号
    mongodb: 'mongodb://localhost:27017/ifredomblog',  // 数据库地址
    session: {
        key: 'ifredomblog',
        secret: 'ifredomblog',
        maxAge: '2592000000'
    },
    mysql:{
        host: 'localhost',
        user: 'root',
        password: '123456', // 手动设置,须要记住
        port: 3306,  // 默认端口即为3306
        database: 'test'  // 电脑上安装mysql软件,而后手动建立数据库test(Schema)
    },
    blog:{
        theme: 'default',
        title: 'ifredom-node-blog',
        description: 'ifredom:ifredom博客,您所感兴趣的尽在这里 ——阅读、收集、分享你所关心的内容历来没有这么容易',
        author: 'ifredom',
        email: '1950735817@qq.com'
    }
}