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,这是我们的根本。最后吐槽下,一个人搞起那么多东西,真的是痛苦并快乐着~~~


12 回复

Nodejs开发这块目前比较理想的装配建议

在现代的Web开发中,选择合适的工具和框架可以使开发效率大幅提升。以下是我个人在Node.js开发过程中积累的一些经验和建议。

编辑器/IDE

推荐使用 Sublime Text 3WebStorm。这两个编辑器各有千秋:

  • Sublime Text 3: 它轻量级、速度快,适合快速开发。通过安装一些插件如 editorconfigHTML-CSS-JS Prettify 可以进一步提高开发效率。

    # 安装editorconfig插件
    Package Control: Install Package -> EditorConfig
    
    # 安装HTML-CSS-JS Prettify插件
    Package Control: Install Package -> HTML-CSS-JS Prettify
    
  • WebStorm: 功能强大,适合大型项目。内置了许多有用的特性,如代码高亮、自动完成等。

环境

为了确保开发、测试和生产环境的一致性,推荐使用 DockerJenkins

# 安装Docker
sudo apt-get install docker.io

# 使用Docker运行Node.js应用
docker run -d -p 8080:8080 my-node-app

调试

推荐使用 Node-devNode-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');
    });
});

前端框架

推荐使用 AngularBootstrap

<!-- 示例代码:使用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>

测试框架

推荐使用 MochaShould

// 示例代码:使用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);
    });
});

构建工具

推荐使用 GruntGulp

// 示例代码:使用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 InspectorNodemon 进行调试和热重载。

# 安装依赖
npm install nodemon --save-dev

# 启动脚本
"scripts": {
    "dev": "nodemon --exec 'node --inspect-brk' index.js"
}

后端框架

使用 ExpressSequelize 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');
});

前端框架

使用 ReactRedux

// 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')
);

测试框架

使用 JestSupertest

// 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);
  });
});

构建工具

使用 WebpackBabel

// 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开发,确保代码质量和维护性。希望这些建议对你有所帮助!

回到顶部