尽管我很了解JavaScript,但我还是不明白Node.js生态系统中的这三个项目到底是做什么的。是不是有点像《Rails’Rack》?有人能解释一下吗?
当前回答
Node.js本身提供了一个HTTP模块,其createServer方法返回一个对象,您可以使用该对象响应HTTP请求。该对象继承了http。服务器原型。
其他回答
相关信息,特别是如果您正在使用NTVS与Visual Studio IDE一起工作。NTVS将NodeJS和Express工具,脚手架,项目模板添加到Visual Studio 2012, 2013。
此外,将ExpressJS或Connect作为“WebServer”调用的措辞是不正确的。您可以使用或不使用它们来创建一个基本的WebServer。一个基本的NodeJS程序也可以使用http模块来处理http请求,从而成为一个基本的web服务器。
Connect为常见的HTTP服务器功能(如会话管理、身份验证、日志记录等)提供了“更高级别”的api。Express是建立在具有高级功能(类似Sinatra)的Connect之上的。
node . js
Node.js是服务器端的javascript马达。 除了js的所有功能外,它还包括网络功能(如HTTP)和对文件系统的访问。 这与客户端js不同,在客户端js中,网络任务由浏览器独占,出于安全原因禁止访问文件系统。
Node.js作为web服务器:express
运行在服务器上,理解HTTP并可以访问文件的东西听起来像web服务器。但它不是。 为了使node.js像web服务器一样工作,必须对其进行编程:处理传入的HTTP请求并提供适当的响应。 这就是Express所做的:它是一个用js实现的web服务器。 因此,实现一个网站就像配置快速路线,并编程网站的特定功能。
中间件和连接
为页面提供服务涉及到许多任务。这些任务中有许多是众所周知且非常常见的,因此node的Connect模块(可在node下运行的众多模块之一)实现了这些任务。 查看当前令人印象深刻的产品:
logger request logger with custom format support csrf Cross-site request forgery protection compress Gzip compression middleware basicAuth basic http authentication bodyParser extensible request body parser json application/json parser urlencoded application/x-www-form-urlencoded parser multipart multipart/form-data parser timeout request timeouts cookieParser cookie parser session session management support with bundled MemoryStore cookieSession cookie-based session support methodOverride faux HTTP method support responseTime calculates response-time and exposes via X-Response-Time staticCache memory cache layer for the static() middleware static streaming static file server supporting Range and more directory directory listing middleware vhost virtual host sub-domain mapping middleware favicon efficient favicon server (with default icon) limit limit the bytesize of request bodies query automatic querystring parser, populating req.query errorHandler flexible error handler
Connect是框架,通过它你可以选择你需要的(子)模块。 Contrib Middleware页面列举了一长串其他中间件。 Express本身带有最常见的Connect中间件。
怎么办呢?
安装node . js。 Node自带npm,节点包管理器。 命令npm install -g express将全局下载并安装express(查看express指南)。 在命令行中(而不是在节点中)运行express foo将创建一个名为foo的准备运行的应用程序。切换到它的(新创建的)目录,并使用node <appname>命令运行它,然后打开http://localhost:3000并查看。 现在你成功了。
middleware as the name suggests actually middleware is sit between middle.. middle of what? middle of request and response..how request,response,express server sit in express app in this picture you can see requests are coming from client then the express server server serves those requests.. then lets dig deeper.. actually we can divide this whole express server's whole task in to small seperate tasks like in this way. how middleware sit between request and response small chunk of server parts doing some particular task and passed request to next one.. finally doing all the tasks response has been made.. all middle ware can access request object,response object and next function of request response cycle..
这是一个很好的例子来解释中间件在表达YouTube视频中间件
Node.js本身提供了一个HTTP模块,其createServer方法返回一个对象,您可以使用该对象响应HTTP请求。该对象继承了http。服务器原型。
推荐文章
- NPM清洁模块
- 在Node.js中加载基本HTML
- Node.js和CPU密集型请求
- 为什么在节点REPL中没有定义__dirname ?
- 在Node.js中克隆对象
- 中间件到底是什么?
- Node.js中的process.env.PORT是什么?
- js的Mongoose.js字符串到ObjectId函数
- ELIFECYCLE Node.js错误是什么意思?
- 如何完全卸载Ubuntu中的nodejs, npm和node
- 在猫鼬模式中添加created_at和updated_at字段
- 我如何把变量javascript字符串?
- 如何强制tsc忽略node_modules文件夹?
- NPM全局安装“无法找到模块”
- MongoDB和Mongoose的区别