Nodejs开发这块目前比较理想的装配建议
Nodejs开发这块目前比较理想的装配建议
####编辑器/IDE Sublime Text 3 或 WebStorm 目前只用sb3,因为它够快,够Cool,够顺手。以目前项目的复杂度,它足够用了。通过使用editorconfig以及它的插件来规范代码。HTML-CSS-JS Prettify, Bracker Highlighter, BufferScroll, DocBlocker, Emmet, Side Bar等插件都很好用。
####环境 Docker + Jenkins 快速搭建持续集成环境。docker则保证你的代码环境在开发,测试,线上保持高度的一致。windows和mac上需要使用boot2docker。
####调试 Node-dev + Node-inspector + Livereload 可以在保存代码的时候快速重启服务器或自动刷新页面。而node-insepctor可以让像调试前端代码一样调试Node.js。
####后端框架 Yog + Yogurt 这套系统是百度FEX团队的作品,非常好用。相当于Kraken-js + Fis的加强版。 虽然有些地方不够完美,但已经足够解决项目上线后的资源管理问题了。再加上集成了Bigpipe,足以应付之后某些模块的性能要求。要解决callback hell,选用Q或者bluebird这样的Promise方式。对于有多并发,顺序要结果的需求可以使用eventproxy,要限制并发就使用bagpipe。models操作这块选用orm。后台数据缓存,session缓存用redis。数据库用mysql或mongodb。多个业务间通过rpc交互。由于Node.js是单线程,一不小心整个进程也跟着挂了,所以需要pm2来守护进程,而且要启动多个Node进程,合理利用系统资源。 目前我们项目走的是大前端方向,也就Java + Node.js,所以我这边自己做了一个类似淘宝Midway的东西,方便接口的管理使用,mock数据,联调,安全性测试。Midway是个好东西,但是淘宝没开源。
####前端框架 Angular + Bootstrap Angular 是一个众所周知的MVVM架构。目前本人也是第一次尝试使用。但是用过后就是各种爽, 虽然坑也不少。 双向绑定让你脱离dom操作。把页面切分成一个个组件,每个组件都有自己的scope。组件间通过事件交互。 数据源和交互都比较类似的组件还可以通过继承的方式关联。 通用组件需要定义自己的directive,整个页面模板看起来非常简洁。 加上ng-resource和angular-cache很方便去管理API和数据缓存。 但是用了这货你就更需要关注内存的使用情况了。 对于要支持ie6、ie7的同学,可以使用正美的avalon。
####测试框架 Mocha + Should + Karma + Protractor 目前我这边单元测试、e2e测试的标配
####构建工具 Grunt或Gulp 可以根据自己的项目要求,构建出项目。这个可以参照 generator-angular-fullstack 构建出项目目录结构。 我现在在做的项目基本是以这样的结构。不管是开发和单元测试。不能再爽了~~
###总结: 虽然没怎么深入,连代码也没贴,但还是值得大家去尝试。以我自己的使用情况来看,即使很大的项目,也可以让代码很优雅,很好去维护。Node.js使得全栈工作更普遍,它可以帮助前端同学更好的掌握JavaScript,并且更关注底层的东西。但是用户直接面对的还是页面。所以对于前端来说,怎么使页面展示更快,更流畅,体验更好,更Cool,这是我们的根本。最后吐槽下,一个人搞起那么多东西,真的是痛苦并快乐着~~~
Nodejs开发这块目前比较理想的装配建议
在现代的Web开发中,选择合适的工具和框架可以使开发效率大幅提升。以下是我个人在Node.js开发过程中积累的一些经验和建议。
编辑器/IDE
推荐使用 Sublime Text 3 或 WebStorm。这两个编辑器各有千秋:
-
Sublime Text 3: 它轻量级、速度快,适合快速开发。通过安装一些插件如
editorconfig
和HTML-CSS-JS Prettify
可以进一步提高开发效率。# 安装editorconfig插件 Package Control: Install Package -> EditorConfig # 安装HTML-CSS-JS Prettify插件 Package Control: Install Package -> HTML-CSS-JS Prettify
-
WebStorm: 功能强大,适合大型项目。内置了许多有用的特性,如代码高亮、自动完成等。
环境
为了确保开发、测试和生产环境的一致性,推荐使用 Docker 和 Jenkins:
# 安装Docker
sudo apt-get install docker.io
# 使用Docker运行Node.js应用
docker run -d -p 8080:8080 my-node-app
调试
推荐使用 Node-dev 和 Node-inspector 结合 Livereload 进行开发:
# 安装Node-dev
npm install -g node-dev
# 启动Node.js应用
node-dev app.js
# 使用Node-inspector进行调试
node-debug app.js
后端框架
推荐使用 Yog + Yogurt 框架,它们提供了强大的资源管理和性能优化功能:
// 示例代码:使用Yog框架创建一个简单的HTTP服务器
const Yog = require('yog');
const express = require('express');
const app = express();
const yog = new Yog(app);
yog.init({
// 配置项
}, () => {
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
});
前端框架
推荐使用 Angular 和 Bootstrap:
<!-- 示例代码:使用Angular和Bootstrap的HTML结构 -->
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Hello Angular!</h1>
<div ng-controller="MyController">
<p>{{ message }}</p>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
<script>
angular.module('myApp', [])
.controller('MyController', function($scope) {
$scope.message = 'Hello from Angular!';
});
</script>
</body>
</html>
测试框架
推荐使用 Mocha 和 Should:
// 示例代码:使用Mocha和Should进行单元测试
const should = require('should');
const myModule = require('./myModule');
describe('My Module', function() {
it('should return the correct result', function() {
myModule.add(1, 2).should.equal(3);
});
});
构建工具
推荐使用 Grunt 或 Gulp:
// 示例代码:使用Gulp构建项目
const gulp = require('gulp');
const sass = require('gulp-sass');
gulp.task('styles', function() {
return gulp.src('scss/**/*.scss')
.pipe(sass())
.pipe(gulp.dest('css'));
});
gulp.task('default', ['styles'], function() {
gulp.watch('scss/**/*.scss', ['styles']);
});
总结
以上是我在Node.js开发过程中的一些经验分享。尽管没有深入到代码细节,但这些工具和框架的组合确实能够大大提高开发效率和代码质量。Node.js不仅使全栈开发成为可能,还帮助前端开发者更好地理解底层逻辑。然而,最终的目标始终是提供更快、更流畅、用户体验更好的页面。希望这些建议对你有所帮助!
后端框架这部分挺特别的,我上FEX他们官网都没找到呢,想问问楼主是如何选中这款的呢?
fis 对于sass编译的场景比较无奈,不止sass,还有其他需要编译的场景都比较无力,每次都要release一次,速度慢,而且监听还会蹦,痛不欲生
mark,框架工具选择上和我的相差巨大 :D
后端用Python的tornado咋样?哈哈~
boot2docker不稳定,虚拟机坏过好几次了
借鉴啦,mark
我最近一直在用vs code 个人感觉还是蛮不错的,sb经常跳出购买提示,也是比较烦人
赞
想问下docker + jenkins的持续继承是怎么做的?最近刚好有这种需求 然后前段为毛不是react,现在流行 Isomorphic app 哦
针对“Nodejs开发这块目前比较理想的装配建议”这个帖子的内容,以下是一些建议和示例代码:
编辑器/IDE
推荐使用 Visual Studio Code (VSCode),它具备丰富的插件生态,支持多种语言,且易于配置。
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.detectIndentation": false
}
环境
使用 Docker 来确保环境一致性。
# Dockerfile 示例
FROM node:14-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
调试
使用 Node Inspector 和 Nodemon 进行调试和热重载。
# 安装依赖
npm install nodemon --save-dev
# 启动脚本
"scripts": {
"dev": "nodemon --exec 'node --inspect-brk' index.js"
}
后端框架
使用 Express 和 Sequelize ORM。
// index.js
const express = require('express');
const app = express();
const sequelize = require('./db');
sequelize.authenticate()
.then(() => console.log('Database connected...'))
.catch(err => console.error('Error:', err));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
前端框架
使用 React 和 Redux。
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { createStore } from 'redux';
const initialState = { count: 0 };
function counter(state = initialState, action) {
switch (action.type) {
case 'INCREMENT':
return { ...state, count: state.count + 1 };
default:
return state;
}
}
const store = createStore(counter);
store.subscribe(() =>
console.log(store.getState())
);
ReactDOM.render(
<div>
<h1>{store.getState().count}</h1>
<button onClick={() => store.dispatch({ type: 'INCREMENT' })}>+1</button>
</div>,
document.getElementById('root')
);
测试框架
使用 Jest 和 Supertest。
// package.json
"scripts": {
"test": "jest"
}
// test/server.test.js
const request = require('supertest');
const app = require('../index');
describe('GET /', () => {
it('should return status 200', async () => {
const response = await request(app).get('/');
expect(response.status).toBe(200);
});
});
构建工具
使用 Webpack 和 Babel。
// webpack.config.js
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}
]
}
};
这些工具和框架能帮助你高效地进行Node.js开发,确保代码质量和维护性。希望这些建议对你有所帮助!