Nodejs初学者,有点疑问

Nodejs初学者,有点疑问

我是一名初学者,现在搜索node.js相关资料全部都是 什么 node.js的框架,模块的使用。 能不能少一点 什么 express框架的使用,什么在等什么模块更新云云,社区能否多一些这些框架的原理,之类的东西呢? 有没有更原始一点的东西呢?让社区成员,从零开始讨论node.js本身,还有如何写自己模块,自己的框架,然后贡献到社区呢,而不是啥啥啥框架的对着文档配置,使用,。

8 回复

当然可以理解你的需求。作为一个初学者,了解Node.js的基本原理和如何编写自己的模块或框架是非常重要的。以下是一些基础内容,帮助你从零开始理解Node.js,并提供一些简单的示例代码。

Node.js 基本概念

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript,使你可以用 JavaScript 来做后端开发。

1. 模块系统

Node.js 使用模块化系统来组织代码。每个文件都是一个模块,你可以通过 require 导入其他模块。

示例代码:

// math.js
function add(a, b) {
    return a + b;
}

function subtract(a, b) {
    return a - b;
}

module.exports = { add, subtract };

在另一个文件中导入并使用:

// app.js
const math = require('./math');

console.log(math.add(5, 3)); // 输出: 8
console.log(math.subtract(5, 3)); // 输出: 2

2. 创建 HTTP 服务器

Node.js 提供了内置的 http 模块,可以用来创建 HTTP 服务器。

示例代码:

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
});

server.listen(3000, () => {
    console.log('Server is running on port 3000');
});

这段代码创建了一个简单的 HTTP 服务器,监听端口 3000,并返回 “Hello World”。

如何编写自己的模块或框架

编写自己的模块或框架是一个循序渐进的过程。你可以从简单的功能开始,逐步构建更复杂的逻辑。

示例代码:

假设你想创建一个简单的日志模块:

// logger.js
class Logger {
    log(message) {
        console.log(`[${new Date().toISOString()}] ${message}`);
    }
}

module.exports = Logger;

在其他文件中使用:

// app.js
const Logger = require('./logger');

const logger = new Logger();
logger.log('This is a test message.');

通过这种方式,你可以逐渐扩展这个模块的功能,例如添加文件输出、日志级别等功能。

希望这些示例能帮助你更好地理解Node.js的基础知识,并鼓励你开始编写自己的模块和框架。如果你有更多问题,欢迎继续提问!


汗, 中文社区不够强大… NPM 也在外国人手里… 楼主的要求是我们想要而达不到的. 目前只能靠自己搜…

我便是一位从零开始的人,学习记录:Node.js家园

我也是从0学起的,不过我没有用到框架,现在的框架无非基于mvc我的学习过程很简单。自己想做个什么东西,然后分析下先干什么后干什么,遇到的问题网上搜下相关的知识。比如,我想写个http的服务器。那我第一步就先去找如何让client和server连接起来,等能连接了在继续下一步。一步一步的来,不一定非要依靠框架,跟我一起学的有个朋友,用express用的舒服了,结果脱离了express 连个基于net的socket的连接都写不出来

感觉你这样学习靠谱,框架 主要是用来学习的,看看别人是怎么实现的,从而提高自己的node.js 水平,而不是照着文档配置,使用。

《Node Web开发》一书的前半部分都是没有框架的。而且第四章还带着大家做一个简单的无框架例子,再引入框架进行开发。

当然可以!对于Node.js初学者来说,理解底层概念和基础非常重要。以下是一些关于Node.js基础知识和如何编写自己的模块或框架的建议和示例。

Node.js 基础知识

  1. 事件驱动、非阻塞I/O

    • Node.js 是一个基于 Chrome V8 JavaScript 引擎的平台,它允许你在服务器端运行 JavaScript。
    • 它的核心特性是非阻塞 I/O 和事件驱动架构。这意味着在等待 I/O 操作时不会阻塞主线程。
  2. 核心模块

    • Node.js 提供了许多核心模块,如 httpfspath 等。
    • 示例:创建一个简单的 HTTP 服务器。
      const http = require('http');
      
      const server = http.createServer((req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello World\n');
      });
      
      server.listen(3000, () => {
        console.log('Server running at http://localhost:3000/');
      });
      

编写自己的模块

  1. 模块基础
    • 模块是 Node.js 的核心概念之一。每个文件就是一个模块,可以导出数据和函数。

    • 示例:创建一个简单的模块。

      // myModule.js
      function sayHello(name) {
        console.log(`Hello, ${name}!`);
      }
      
      module.exports = {
        sayHello
      };
      
    • 使用该模块:

      // app.js
      const myModule = require('./myModule');
      
      myModule.sayHello('Alice'); // 输出 "Hello, Alice!"
      

编写自己的框架

  1. 简单框架示例
    • 创建一个简单的 Web 框架,处理路由。

    • 示例:一个简单的路由处理框架。

      // simpleFramework.js
      class SimpleFramework {
        constructor() {
          this.routes = {};
        }
      
        get(path, handler) {
          this.routes[path] = handler;
        }
      
        handleRequest(req, res) {
          const handler = this.routes[req.url];
          if (handler) {
            handler(req, res);
          } else {
            res.writeHead(404, { 'Content-Type': 'text/plain' });
            res.end('Not Found');
          }
        }
      }
      
      module.exports = SimpleFramework;
      
    • 使用该框架:

      // app.js
      const http = require('http');
      const SimpleFramework = require('./simpleFramework');
      
      const framework = new SimpleFramework();
      
      framework.get('/hello', (req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello from custom framework!');
      });
      
      http.createServer((req, res) => {
        framework.handleRequest(req, res);
      }).listen(3000, () => {
        console.log('Server running at http://localhost:3000/');
      });
      

希望这些示例能帮助你更好地理解Node.js的基础概念和如何编写自己的模块和框架。继续探索和实践,你会逐渐掌握更多高级特性和最佳实践。

回到顶部