nodejs开发web


一、介绍

Node.js是运行在服务端的JavaScript。可以开发Web的后端,相应的,有配合使用的前端模板和框架。

二、后端开发

nodejs + express + sqlite3 + sequelize

后端web框架,例如express。
sequelize 是nodejs的ORM库,很方便。sqlite3是一个很小的轻量级的数据库。(客户端工具,推荐:
DB Browser for SQLite)

package.js 引入依赖:

{
"dependencies": {
"sqlite3": "^4.1.1",
"sequelize": "^4.41.2"
}
}

sqlite-nodejs库的使用: https://www.sqlitetutorial.net/sqlite-nodejs/query/
sequelize官方文档: https://sequelize.org/v4/manual/tutorial/associations.html
sequelize文档2: https://sequelize.readthedocs.io/en/v3/

三、前端开发

模板引擎

nodejs前端开发有很多模板引擎可以选,例如handlebars, vash, mustache, Jade.
handlebars比较强大,易用。vash也不错,前者写的模板很容易修改成后者。

handlebars官方文档:https://github.com/wycats/handlebars.js
vash官方文档:https://github.com/kirbysayshi/vash

vash

<!-- layout.vash -->
<html>
....
@html.block('content') // 定义一个placeholder,被后面的模板填充
</html>

<!-- user.vash -->
@html.extend('layouts/index', function(user){
@html.block('content', function(user){
// write the actual content
// 使用传进来的参数时: @user.id, @user.name之类的
})
})

四、遇到的问题

  1. 如何hot-deploy? 修改了文件后,自动部署
sudo npm install -g supervisor
supervisor server.js (之前是node server.js, 只是将node换成supervisor即可)
  1. sequelize.js如何设置层级删除?
    答案: https://stackoverflow.com/a/23395771
// Loan has a DueDate
const Loan = sequelize.define("Loan", {
dueDate: Sequelize.DATE
});

// User has a Name, a Barcode and a MemberType (which can be Staff or Student)
const User = sequelize.define("User", {
name: Sequelize.STRING,
barcode: Sequelize.STRING,
memberType: Sequelize.ENUM("Staff", "Student")
});

// A User can have many Loans
// When a user is deleted, all related loan records should be deleted too
User.hasMany(Loan, { as: "Loans", onDelete: 'cascade', hooks: true });
  1. 运行server时,总是报错,提示要手动安装sqlite3
    解决方法是:删掉node_modules, 重新npm install就好了。

参考:

基于Node.js的模板引擎大比拼


文章作者: IT神助攻
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 IT神助攻 !
  目录