Nodejs框架选择求助,同学们帮忙选一下吧,望大家推荐
Nodejs框架选择求助,同学们帮忙选一下吧,望大家推荐
用Nodejs多嵌入式有一段时间了。本人原是做python的,现在打算全面转nodejs,所以现在需要在项目中使用靠谱的mvc框架和orm框架。我在网上找了很多,发现现在nodejs还没有具有绝对优势的框架,可选的框架很多,所以请使用过的同学帮忙评价一下,使用哪个比较靠谱:
-
类MVC的框架:
sails
geddy
我现在感觉做的比较全面的就这两了个, sails基于express我比较倾向,但是实现完整度来说还是geddy比较好。 -
ORM:上面提到的框架都有自己的ORM实现,另外成熟的ORM框架还有
orm2
sequelizejs
persistencejs
他们基本的功能都实现了,包括关联,nosql的支持,个人感觉sequelizejs
实现的较完整。
毕竟还没有实践过,所以打算请教一下用过的同学们,哪个比较好?
当然可以!Node.js 生态系统中有许多优秀的框架和 ORM 库供你选择。下面我会根据你的需求,为你推荐一些合适的框架,并提供一些示例代码以帮助你更好地理解。
类 MVC 框架
Sails.js
Sails.js 是一个基于 Express 的 MVC 框架,它提供了很多现代 Web 应用所需的特性,如实时功能、模型关联、RESTful API 支持等。Sails.js 是我推荐的一个选择,因为它基于 Express,社区支持广泛,文档也很丰富。
安装 Sails.js
npm install -g sails
创建一个新的 Sails 项目
sails new my-app
cd my-app
启动 Sails.js 应用
sails lift
示例代码: 假设你要创建一个简单的用户模型和控制器。
// api/models/User.js
module.exports = {
attributes: {
name: { type: 'string' },
email: { type: 'string', unique: true }
}
};
// api/controllers/UserController.js
module.exports = {
create: function (req, res) {
User.create(req.body).fetch().then(user => {
return res.ok(user);
}).catch(err => {
return res.serverError(err);
});
}
};
ORM 框架
Sequelize.js
Sequelize 是一个非常强大的 ORM,支持多种数据库(如 MySQL, PostgreSQL, SQLite 等)。它提供了丰富的功能,如事务管理、查询构建器等。
安装 Sequelize
npm install --save sequelize
npm install --save mysql2
初始化 Sequelize
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
(async () => {
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
} catch (error) {
console.error('Unable to connect to the database:', error);
}
})();
定义模型
const User = sequelize.define('User', {
name: {
type: Sequelize.STRING,
allowNull: false
},
email: {
type: Sequelize.STRING,
allowNull: false,
unique: true
}
}, {
timestamps: true
});
创建记录
(async () => {
await User.create({
name: 'John Doe',
email: 'john.doe@example.com'
});
})();
希望这些示例能帮助你更好地理解和选择适合你的框架和 ORM。如果你有更多问题或需要进一步的帮助,请随时提问!
感谢您的回复。我的问题没有问清楚,造成了误解,在嵌入式中使用nodejs已经有一段时间了,这块自然是不会使用什么框架的,而且我们处理都是串口信息。我现在要在网站项目中使用nodejs了(我本人也是做网站开发的),所以在想要使用什么框架,所以我的问题的环境是正常的服务器环境的,不是嵌入式设备。
compound: mvc + orm 加上比较完整脚手架rails构建体系
orm2: 不倾向于分开选择orm和mvc,那不是意味着要自己做或者在选择一套脚手架。
bookshelf: orm,著名的ghost博客系统使用的backbone+promise形态的orm,这个是最近偶尔看到,不用的原因跟上面orm2差不多
sails: 比较新一代的mvc框架,思想体现为前后分离,直接从数据库到上层接口一次性生成。但是我们当时项目开始的时候发现没有联合查询,所以直接放弃了,但是现在看来根本也没什么太多的联合查询的需求。
geddy: 我就不知道了,看起来感觉一般啊
Meteor: 勇敢者游戏,超级新概念框架,超牛逼,看Star就知道了,他们服务器端的设计是完全脱离程序级别的,是非常高级抽象。
Derby: 跟meteor类似,不过弱了很多,其实sails的概念就是Meteor和Derby概念的一半。Derby依赖的他们自己实现的racer项目就跟sails感觉类似,
我们最后选择了用compound框架,好处是开发起来快,因为rails体系大家比较熟,单元测试集成测试什么都生成的差不多了。坏处是他们的mysql-adapter不是很好,主要是主键不支持字符串,我们自己改了改。
如果让我重新选择,我可能会选择sails,看过他们源代码,很精巧,安全也做得不错。
我现在在做BPO方面的开发,用的是 nginx + socket.io + redis + knockout.js ,没有用框架,除了少数存档数据外几乎没有用数据库,一切为了性能。当然这不符合一般的应用需求。
express 安全性不好?!
在选择 Node.js 框架时,确实需要考虑多个因素,比如项目的复杂性、团队的经验以及具体需求等。以下是一些针对您提到的需求的建议:
MVC 框架
-
Sails.js
- Sails.js 是一个基于 Express 的现代 web 应用框架,它提供了完整的 MVC 结构。
- Sails.js 提供了许多内置功能,如数据库连接、权限管理、表单验证等。
- 示例代码:
// 安装 Sails.js npm install -g sails sails new myapp cd myapp sails lift
- 优点:提供了完善的文档和支持,易于上手。
- 缺点:可能对于小型项目来说显得有些笨重。
-
Geddy
- Geddy 是一个轻量级的 MVC 框架,与 Rails 风格类似。
- 示例代码:
// 安装 Geddy npm install geddy -g geddy app myapp cd myapp geddy server
- 优点:轻量级,适合快速原型开发。
- 缺点:社区和文档支持不如 Sails.js 多。
ORM 框架
-
Sequelize.js
-
Sequelize 是一个强大的 ORM,支持多种 SQL 数据库(如 MySQL, PostgreSQL 等)。
-
示例代码:
// 安装 Sequelize npm install sequelize --save npm install mysql2 --save // 初始化 Sequelize const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); const User = sequelize.define('User', { name: DataTypes.STRING, age: DataTypes.INTEGER }); // 连接数据库 async function run() { await sequelize.authenticate(); console.log('Connection has been established successfully.'); } run();
-
优点:功能强大,支持复杂的查询和事务处理。
-
缺点:学习曲线稍陡,文档相对较多。
-
-
Orm2
-
Orm2 是一个轻量级的 ORM,也支持 SQL 数据库。
-
示例代码:
// 安装 orm2 npm install orm2 --save // 初始化 orm2 var orm = require('orm'); orm.connect("mysql://user:pass@localhost/mydb", function (err, db) { if (err) throw err; var User = db.define("users", { name: String, email: String }); db.sync(function (err) { if (err) throw err; console.log("Database synced"); }); });
-
优点:简单易用。
-
缺点:功能相对较少,不支持某些高级特性。
-
综合考虑,如果你希望使用一个成熟的、功能强大的框架,Sails.js + Sequelize.js 可能是最好的选择。如果你希望保持轻量级且易于上手,可以尝试Geddy + Orm2。根据你的具体需求来选择最适合的框架组合。