node.js+java怎么实现nodejs前后端交互互

如何使用nodejs作为java(后端)和前端的中间件? - 知乎112被浏览15024分享邀请回答2添加评论分享收藏感谢收起64 条评论分享收藏感谢收起查看更多回答2 个回答被折叠()利用Node.js+Koa框架实现前后端交互的方法
作者:IT青年
字体:[ ] 类型:转载 时间:
这篇文章主要给大家介绍了利用Node.js+Koa框架实现前后端交互的方法,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起学习学习吧。
对于一个前端工程师来说不仅仅要会前端的内容,后端的技术也需要熟练掌握。今天我就要通过一个案例来描述一下前端是如何和后端进行数据交互的。
koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
首先,我们的服务器需要部署好Nodejs的环境,这里我用Nodejs在windows下的本地服务器来做演示。
部署NodeJS环境请看:《》这篇文章。
对Koa框架不熟悉的朋友可以参考这篇文章:
环境部署好之后我们需要创建一个工程的目录,并且在目录中通过npm来安装Koa框架以及一些用到的依赖库。
下图是我完成后的目录结构。
cd到你的工程目录,然后执行npm koa目录里就会多出node_modules这样一个文件夹,里边存放用到的一些依赖库。
接下来我们创建一个app.js文件,用来设置访问服务器时用到的路由,代码如下
var koa = require('koa');
var controller = require('koa-route');//需要通过npm来添加此依赖
var app = koa();
var service = require('./service/WebAppService.js');//引用WebAppService.js
/*设置路由*/
app.use(controller.get('/ajax/search',function*(){
this.set('Cache-Control','no-cache');
this.set('Access-Control-Allow-Origin','*');
var querystring = require('querystring');
var params = querystring.parse(this.req._parsedUrl.query);
var key = params.
var start = params.
var end = params.
this.body = yield service.get_search_data(key,start,end);
app.listen(3001);
console.log('Koa server is started');
node_modules文件夹内默认是没有koa-route这个依赖的,需要通过npm koa-route来安装
然后我们需要在service目录下创建一个WebAppService.js文件,用来请求接口,代码如下
var fs = require('fs');
exports.get_search_data = function(key,start,end){
return function(cb){
var http = require('http');
var qs = require('querystring');
var data = {
start:start,
/*请求MobAPI里的火车票查询接口*/
var content = qs.stringify(data);
var http_request = {
hostname:'',
path:'/train/tickets/queryByStationToStation?' + content,
method: 'GET'
var req = http.request(http_request,function(response){
var body = '';
response.setEncoding('utf-8');
response.on('data',function(chunk){
response.on('end',function(){
cb(null,body);
req.end();
这样实际是做了一个接口的转接,我们不仅可以请求本地的接口而且还可以请求第三方接口,避免了跨域请求时浏览器阻断请求。
接下来我们通过命令来开启服务,终端输入node app.js
然后在浏览器请求接口 http://localhost:3001/ajax/search?key=520520test&start=北京&end=上海
这样我们就实现了接口请求,并获得json数据,感兴趣的朋友可以看看下面文章,下面的文章会将这些从后端获得的数据以一种更加直观的方式呈现在界面上,并运用Vue.js框架制作一个火车票查询系统。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具使用Node.js和Koa框架实现前后端交互 - 简书
使用Node.js和Koa框架实现前后端交互
对于一个前端工程师来说不仅仅要会前端的内容,后端的技术也需要熟练掌握。今天我就要通过一个案例来描述一下前端是如何和后端进行数据交互的。
首先,我们的服务器需要部署好Nodejs的环境,这里我用Nodejs在windows下的本地服务器来做演示。部署NodeJS环境请看我这篇文章。
环境部署好之后我们需要创建一个工程的目录,并且在目录中通过npm来安装Koa框架以及一些用到的依赖库。下图是我完成后的目录结构。
cd到你的工程目录,然后执行npm koa目录里就会多出node_modules这样一个文件夹,里边存放用到的一些依赖库。
接下来我们创建一个app.js文件,用来设置访问服务器时用到的路由,代码如下
var koa = require('koa');
var controller = require('koa-route');//需要通过npm来添加此依赖
var app = koa();
var service = require('./service/WebAppService.js');//引用WebAppService.js
/*设置路由*/
app.use(controller.get('/ajax/search',function*(){
this.set('Cache-Control','no-cache');
this.set('Access-Control-Allow-Origin','*');
var querystring = require('querystring');
var params = querystring.parse(this.req._parsedUrl.query);
var key = params.
var start = params.
var end = params.
this.body = yield service.get_search_data(key,start,end);
app.listen(3001);
console.log('Koa server is started');
node_modules文件夹内默认是没有koa-route这个依赖的,需要通过npm koa-route来安装
然后我们需要在service目录下创建一个WebAppService.js文件,用来请求接口,代码如下
var fs = require('fs');
exports.get_search_data = function(key,start,end){
return function(cb){
var http = require('http');
var qs = require('querystring');
var data = {
start:start,
/*请求MobAPI里的火车票查询接口*/
var content = qs.stringify(data);
var http_request = {
hostname:'',
path:'/train/tickets/queryByStationToStation?' + content,
method: 'GET'
var req = http.request(http_request,function(response){
var body = '';
response.setEncoding('utf-8');
response.on('data',function(chunk){
response.on('end',function(){
cb(null,body);
req.end();
这样实际是做了一个接口的转接,我们不仅可以请求本地的接口而且还可以请求第三方接口,避免了跨域请求时浏览器阻断请求。
接下来我们通过命令来开启服务,终端输入node app.js
然后在浏览器请求接口 http://localhost:3001/ajax/search?key=520520test&start=北京&end=上海
这样我们就实现了接口请求,并获得json数据,下一章我会将这些从后端获得的数据以一种更加直观的方式呈现在界面上,并运用Vue.js框架制作一个火车票查询系统。
站在巨人肩膀上!赞助商链接
客户端Javascript驱动的MVC如angular, ember, backbone等的问题是比较慢,用户体验差,同时对搜索引擎不友好,因此,J业界开始实现Javacript的服务器端渲染。前段时间Ember.js刚推出FastBoot,,并且这几天紧锣密鼓加紧推进中:。而同时ReactJS已经推出在Node.js + React 同构渲染的演示:这个案例是一个普通分页批量查询的案例,如下图:
点按图中的id或name等表格名,能够实现大小排序,页面下有分页符,通过查看Html源码,表格中数据是以普通html的table格式输出,但是点按分页的下一页,再查看html源码,还是第一页的内容,这就与普通使用Jsp或PHP/ASP等服务器端渲染区别所在,后者每切换一个页面实际是从服务器端再拉取一个新的页面内容,而新式的JS服务器端渲染技术是第一页如同JS/PHP/ASP,一旦输出渲染成功,页面各种效果包括切换到下一页都是由第一页的JS全面掌管,这时如同传统AngularJS等客户端Javascript驱动渲染页面一样,由AngularJS实时修改当前页面的DOM。这种服务器端和客户端同构Isomorphic JavaScript 技术的好处是:1.更好的用户体验,加载页面快2.搜索引擎友好,利于SEO3.易于维护4.自由逐步增强。这个代码演示下载后,运行node server.js后,浏览器浏览127.0.0.1:4444可以得到如上图效果。看看 server.js主要代码:/** @jsx React.DOM */var React = require('react/addons');/* create factory with griddle component */var Griddle = React.createFactory(require('griddle-react'));var fakeData = require('../data/fakeData.js').fakeDvar columnMeta = require('../data/columnMeta.js').columnMvar resultsPerPage = 100;var ReactApp = React.createClass({
componentDidMount: function () {
console.log(fakeData);
render: function () {
<div id="table-area">
<Griddle results={fakeData} columnMetadata={columnMeta} resultsPerPage={resultsPerPage} tableClassName="table"/>
</div>
});/* Module.exports instead of normal dom mounting */module.exports.ReactApp = ReactA/* Normal mounting happens inside of /main.js and is bundled with browerify */这段代码建立了一个ReactApp模块功能,其功能主要是输出表格内容,内容数据在fakeData.js中,表格表头标题数据在columnMeta.js中。当前端浏览器访问127.0.0.1:4444/时,请求发往端口路由/app/routes/coreRoutes.js:var React = require('react/addons');var ReactApp = React.createFactory(require('../components/ReactApp').ReactApp);module.exports = function(app) {
app.get('/', function(req, res){
// React.renderToString 将前面的模块组件ReactApp
//作为输入,输出产生markup
var reactHtml = React.renderToString(ReactApp({}));
// ReactApp输出内容输出到index.ejs的变量reactOutput处
res.render('index.ejs', {reactOutput: reactHtml});
});};这个路由的功能是直接将ReactApp输出内容输出到index.ejs的变量reactOutput处,index.ejs相当于我们以前的index.htm或index.jsp/index.php等:<!doctype html><html>
<head>
<title>React Isomorphic Server Side Rendering Example</title>
<link href='/styles.css' rel="stylesheet">
</head>
<body>
<h1 id="main-title">React Isomorphic Server Side Rendering Example</h1>
<!-- reactOutput变量输出在这里,它是服务器端React Dom节点-->
<div id="react-main-mount">
<%- reactOutput %>
</div>
<!-- comment out main.js to ONLY see server side rendering -->
</body></html>index.ejs中的
&%- reactOutput %&变量类似JSP中的&%=reactOutput %&,这个reactOutput 是模块组件ReactApp({})的输出。一旦index.ejs输出到浏览器,就形成了上图的效果,然后/main.js应该掌管了整个页面以后的流程,用户在页面上点按排序和分页都是main.js实现即时动态渲染,页面网址不再变化,类似传统的AngularJS效果。
就一句话: "第一次服务端渲染,后面客户端渲染"
是啊,这样的方式用了很多年了吧。不过用node做web服务器做中间层,好处是同一个模板,前后端渲染很方便,很多共用的代码
这个例子运行出错呃,错误如下,请问您知道这个怎么解决吗?Warning: Component(...): No `render` method found on the returned component instance: you may have forgotten to define `render` in your component or you may have accidentally tried to render an element whose type is a function that isn't aReact component.Warning: Don't set the props property of the React element. Instead, specify the correct value when initially creating the element.TypeError: Can't add property context, object is not extensible
at ReactCompositeComponentMixin.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactCompositeComponent.js:153:18)
at wrapper [as mountComponent] (D:\nodejs\node_global\node_modules\react\lib\ReactPerf.js:70:21)
at Object.ReactReconciler.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactReconciler.js:38:35)
at ReactDOMComponent.ReactMultiChild.Mixin.mountChildren (D:\nodejs\node_global\node_modules\react\lib\ReactMultiChild.js:192:44)
at ReactDOMComponent.Mixin._createContentMarkup (D:\nodejs\node_global\node_modules\react\lib\ReactDOMComponent.js:289:32)
at ReactDOMComponent.Mixin.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactDOMComponent.js:199:12)
at Object.ReactReconciler.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactReconciler.js:38:35)
at ReactCompositeComponentMixin.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactCompositeComponent.js:247:34)
at wrapper [as mountComponent] (D:\nodejs\node_global\node_modules\react\lib\ReactPerf.js:70:21)
at Object.ReactReconciler.mountComponent (D:\nodejs\node_global\node_modules\react\lib\ReactReconciler.js:38:35)
赞助商链接
赞助商链接
最佳分辨率
OpenSource
Code & 2002-20面向 Java 开发人员的 Node.js
在过去的几年中,JavaScript 已经成为 Web 应用程序开发的幕后英雄。这样的情景让那些习惯将 JavaScript 称为 “玩具式语言” 的软件开发人员大跌眼镜。尽管有其他更流行的语言(这里是说开发人员忠实拥护的那些),而 JavaScript 作为标准且浏览器中立的脚本语言的地位从未动摇过。在客户端 Web 开发方面,它可能是世界上运用最广泛的语言。JavaScript 在服务器端脚本也占有一席之地,而且影响还会越来越大。虽然过去 JavaScript 在服务器端做过一些尝试,但并没有什么大的收获,除了 Node.js 或 Node。Node 专门用来协助开发人员构建可扩展的网络程序,它是服务器端的编程环境,但几乎重建了整个 JavaScript 以服务于新一代的开发人员。对很多 Java 开发人员而言,Node 最大的吸引力在于软件并发的新方法。尽管 Java 平台在并发方式上还会不断进步(预计在 Java 7 和 Java 8 中会有大幅提升),但事实是 Node 满足了一个需求,它以更轻量级方式进行处理,这是众多 Java 开发人员想要的。就像客户端脚本使用 JavaScript 一样,在 Node 环境下编辑服务器端脚本非常棒,因为它非常有效,而且它能够在很多 Java 开发人员遇到挑战的领域中发挥作用。在本文中,我将为您介绍服务器端脚本的革命,那就是 Node。首先我们从整体结构上总揽全局,看看是什么让 Node 与众不同,然后会演示如何快速构建一个使用 MongoDB 持久化数据的可扩展性 Web 应用程序。您将会亲身体验 Node 是多么有趣,并且看到用它来组建一个有效的 Web 应用程序有多快。Node 的事件驱动并发Node 是建立在 Google 的 V8 JavaScript 引擎基础上的一个可扩展、事件驱动 I/O 环境。Google V8 实际上在执行之前就将 JavaScript 编译到本机机器代码中,从而达到快速的运行时性能,实际上这与 JavaScript 关系不大。Node 本身能够让您快速构建速度极快、高度并发的网络应用程序。事件驱动 I/O 对 Java 开发人员来说可能有些陌生,但并非是全新的概念。与 Java 平台中使用的多线程编程模型不同,Node 处理并发的方法是单线程加上事件循环。Node 结构可以确保不会不堵塞和异步 I/O 传输。那些通常会引起堵塞的调用如等待数据库查询结果等在 Node 中不会发生。Node 应用程序不是等待代价高昂的 I/O 活动来完成操作,而是会发出一个回调(roll back)。当资源返回后,会异步调用关联的回调。并发性在 Node 程序中照样工作。如果在 Java 平台上运行之前的场景,我可能会选择复杂且耗时的方法,从传统的线程到 Java NIO 中较新的库,甚至是改善和更新的 java.util.concurrent 包。尽管 Java 的并发很强大,但却难以理解,还要用它来编码!相比而言,Node 的回调机制是嵌在语言内部的;您不需要添加诸如 synchronized 这样额外的结构使它工作。Node 的并发模型极其简单,让广大的开发人员都能够接受。 Node 的 JavaScript 语法也为您减少敲键的次数,节省大量时间。只需少量代码,您就能构建快速的、可扩展的 Web 应用程序,并且它能处理大量的并发连接。当然您也可以在 Java 平台上实现,但将会需要更多代码行和一大堆库和结构。如果您担心对新的编程环境不熟悉,那么大可不必:如果已经了解一些 JavaScript,那么 Node 很容易学习,这一点我可以向您保证。开始使用 Node如前所述,Node 很容易上手,而且有很多好的在线教程可以为您提供帮助。在本文中(以及我的
中),我重点关注的是帮助 Java 开发人员理解 Node 的优势。我不会从标准的 “Hello, world”
Web 服务器应用程序讲起,我会直接讲解一个有实际意义的应用程序:将它想象成在 Node 上构建的 Foursquare 网站。安装 Node 需要您遵循特定平台的说明;如果您使用的是 UNIX 一类的平台,如 OSX,那么我推荐您使用
或 NVM,它能处理安装正确版本 Node 的细节信息。无论哪种情况,请现在就 。我们还使用了第三方库来构建此应用程序,因此您可能还想 ,它是 Node 的包管理器。NPM 允许您指定项目的版本依赖关系,这样就可以下载并包含在您的构建路径中。NPM 在很多方面很像 Java 平台的 Maven,或者是 Ruby 的 Bundler。Node ExpressNode 在 Web 开发人员心目中占据一席之地,一是因为它对并发的处理能力,二是它是按 Web 开发的需求构建的。最流行的一个第三方 Node 工具是轻量级 Web 开发框架 Express,我们将会用它来开发应用程序(参阅
以了解关于 Express 的更多内容)。Express 有很多特性,包括复杂路由、动态模板视图(参见 Node 框架 du jour: Jade)和内容协商。Express 是非常轻量级的,没有内嵌的 ORM 或类似东西来加重其负担。在这一方面,Express 无法与 Rails、Grails 或其他有完整堆栈的 Web 框架相比。安装并使用 Express 的一个简单方法是通过 NPM package.json 文件将其声明为依赖关系,如清单 1 所示。该文件与 Maven 的 pom.xml 或 Bundler 的 Gemfile 类似,但它是 JSON 格式的。 清单 1. 清单 1.NPM 的 package.json 文件{
"name":"magnus-server",
"version":"0.0.1",
"dependencies":{
"express":"2.4.6"
中,我赋予 Node 项目一个名称 (magnus-server) 和一个版本号 (0.0.1)。我还将 Express 2.4.6 版本声明为一个依赖关系。NPM 的一个好处就是它会获取 Express 所有的传递依赖关系,迅速加载 Express 所需的其他所有第三方 Node 库。通过 package.json 定义项目依赖关系之后,就可以通过在命令行输入 npm install 来安装所需的包。您会看到 NPM 安装 Express 和依赖关系,如 connect、mime 等等。 编写网络应用程序我们通过创建一个 JavaScript 文件来编写示例应用程序;我将其命名为 web.js,但实际上可以随便起一个名字。在您最喜欢的编辑器或 IDE 中打开此文件;例如,您可以使用 Eclipse JavaScript 插件 JSDT(参阅 )。 在此文件中,添加清单 2 中的代码:清单 2. Magnus Server:第一步var express = require('express');
var app = express.createServer(express.logger());
app.put('/', function(req, res) {
res.contentType('json');
res.send(JSON.stringify({ status:"success" }));
var port = process.env.PORT || 3000;
app.listen(port, function() {
console.log("Listening on " + port);
});这一小段代码发挥了很大的作用,因此我从头讲起。首先,如果想要在 Node 中使用第三方库,就要用到 require 短语;在
中,我们需要 Express 框架,并通过 express 变量获得其句柄。下一步,我们通过 createServer 调用创建一个应用程序实例,它会创建一个 HTTP 服务器。
然后我们通过 app.put 定义一个端点。在本例中,我们定义一个 HTTP PUT 作为在应用程序根部 (/) 监听的 HTTP 方法。put 调用有两个参数:路由和调用路由时相应的回调。第二个参数是在运行时端点 / 被启动时的调用函数。记住,此回调就是 Node 所谓的事件驱动或事件 I/O,即异步调用回调函数。终端可以同时处理大量请求而不必手动创建线程。作为端点定义的一部分,我们创建处理 / 的 PUT 逻辑。为了简单起见,我们将响应类型设置为 JSON,然后发送一个简单的 JSON 文档:({"status":"success"})。请注意这里的 stringify 方法恰到好处,它会接收哈希表然后将其转换成 JSON 格式。
下一步,创建用来表示应用程序所监听的端口的变量;可以通过获取
PORT 环境变量或直接设置为 3000 来完成。最后,通过调用 listen 方法来启动此应用程序。我们再次传入一个回调函数,它将会在应用程序启动并运行至将消息打印到控制台时被调用(本例中,是 standard out)。
试一下!这个完美的应用程序会对所有 PUT 作出响应,因此只要在命令行输入 node web.js 即可运行。如果您想要进一步测试该应用程序,我建议您下载 WizTools.org 的 。有了 RESTClient,您就可以通过对 http://localhost:3000 执行 HTTP PUT 以快速测出 Magnus Server 是否工作正常。如果正常,您会看到表示执行成功的 JSON 响应。(参阅
了解更多有关安装和使用 RESTClient 的信息。)
在 Express 中处理 JSONJavaScript 和 JSON 紧密关联,这使得在 Express 中管理 JSON 变得非常简单。在这一节,我们将在
的主应用程序中添加一些代码,从而能获取传入的 JSON 文档并将其打印到 standard out。然后,我们将所有内容持久化为 MongoDB 实例。 传入的文档与清单 3 类似(请注意,简单起见,我省略了位置信息):
清单 3. Freddie Fingers 的免费午餐!{
"deal_description":"free food at Freddie Fingers",
"all_tags":"free,burgers,fries"
}清单 4 添加了解析传入文档的功能:清单 4. 用 Express 解析 JSONapp.use(express.bodyParser());
app.put('/', function(req, res) {
var deal = req.body.deal_
var tags = req.body.all_
console.log("deal is :"
+ deal + " and tags are " + tags);
res.contentType('json');
res.send(JSON.stringify({ status:"success" }));
});请注意, 中包含了一行代码指引 Express 使用 bodyParser。这会让我们能轻松地(我是说轻松地)获取传入的 JSON 文档的属性。
put 回调函数中的代码是用来获取传入文档的 deal_description 和 all_tags 属性值。请注意,我们获得请求文档的每个元素时是多么轻松:在本例中,req.body.deal_description 获取 deal_description 的值。
测试一下!你也可以对此实现进行测试。关闭 magnus-server 实例并重启,然后使用一个 HTTP PUT 将一个 JSON 文档提交到 Express 应用程序中。首先,您会看到一个成功响应。其次,Express 会把您提交的值发送到 standard out。通过使用我的 Freddie Fingers 文档,我获取了输出结果。
deal is : free food at Freddie Fingers and tags are free, burgers, fries.Node 的持久性我们已经拥有了一个工作正常的应用程序,它能接收和解析 JSON 文档,并返回响应。现在要做的就是增加一些持久性逻辑。由于我偏爱 MongoDB(参见 ),因此我选择通过 MongoDB 实例持久化数据。为了让处理过程更简单一些,我们将会用到第三方库 ,我们将用它来存储传入 JSON 文档的值。
Mongolian DeadBeef 是众多的用于 Node 的 MongoDB 库中的一个。我之所以选择它是因为我觉得它名字很有趣,还因为它对本机 MongoDB 驱动的监控功能让我非常满意。
现在,您已经知道,使用 Mongolian DeadBeef 的第一步是升级 package.json 文件,如清单 5 所示:清单 5. 添加 JSON 解析{
"name":"magnus-server",
"version":"0.0.1",
"dependencies":{
"express":"2.4.6",
"mongolian":"0.1.12"
}由于我们将会使用 MongoDB 数据存储,因此需要通过运行 npm install 来更新项目的硬件依赖关系。为了提高 Mongolian DeadBeef MongoDB 驱动的性能,我们还需要安装本机 C++ bson 解析器,NPM 能指导我们完成这一过程。
在开始使用 Mongolian DeadBeef 之前,在现有的实现中再添加一个 require,然后连接到所需的 MongoDB 实例上(如清单 6 所示)。在本示例中,我们将连接到由 MongoHQ 托管的实例上,它是 MongoDB 的云供应者。清单 6. 将 Mongolian DeadBeef 添加到 magnus-servervar mongolian = require("mongolian");
var db = new mongolian("mongo://a_username:a_password@:23034/magnus");在 PUT 回调函数中,我们持久化来自传入的 JSON 文档的值,如清单 7 所示:清单 7. 添加 Mongolian insert 逻辑app.put('/', function(req, res) {
var deal = req.body.deal_
var tags = req.body.all_
db.collection("deals").insert({
deal: deal,
deal_tags: tags.split(",")
res.contentType('json');
res.send(JSON.stringify({ status:"success" }));
});仔细看,您会发现 insert 语句和 MongoDB shell 中的 insert 一样。这不是巧合,MongoDB 的 shell 也使用了 JavaScript!因此,我们能够轻松地持久化拥有两个字段的文档:deal 和 deal_tags。请注意,我们通过对 tags 字符串使用 split 方法将 deal_tags 设置为数组。
可以测试吗?(当然可以!)如果您想要测试一下(有谁不想呢?),那么重启实例,再发送一个 JSON 文档,然后再检查 MongoDB 中的 deals 集合。您应该会看到一个与您发送的 JSON 文档几乎一模一样的文档。
清单 8. 添加 Mongolian insert 逻辑{
deal:"free food at Freddie Fingers",
deal_tags:["free", "burgers", "fries"],
_id:"4e73ff3a0001"
}结束语(成功!)如果您以为我偷懒,这么快就结束这篇 Node.js 简介,那么我要告诉您:确实结束了!虽然只写了 20 多行代码,但已经足以构成一个完整、稳定的应用程序,这就是 Node 的美妙之处。编写和理解代码都非常容易,而且异步回调函数使其功能非常强大。应用程序编写完成后,就可以部署在任意个 PaaS 提供程序上,从而达到最大的可扩展性。
一节了解本文中所讨论技术的更多信息,包括 Node.js、 MongoDB 和 PaaS 选项,如 Google App Engine、Amazon 的 Elastic Beanstalk 和 Heroku。
相关主题:浏览重新定义 Java 开发领域的技术,其中包括:(2011 年 4 月)、(2010 年 4 月)、(2009 年 11 月)、(2011 年 8 月)和 (2010 年 9 月)。“”(Michael Abernethy,developerWorks,2011 年 5 月):了解更多有关 Node 这一服务器端解释器的信息,它彻底改变了关于服务器工作方式的一般思路。“”(Noah Gift 和 Jeremy Jones,developerWorks,2011 年 4 月):讨论 Node 框架和系统,然后练习使用 Node 构建一个聊天服务器。:为那些想要掌握 Java 平台上多线程编程,以及利用多核处理器硬件的替代方法的软件开发人员准备的 developerWorks 资源。:介绍云计算概念和 IaaS、PaaS、SaaS 服务模型。了解本文中所讨论技术的更多信息:
:这里有数百篇关于 Java 编程各个方面的文章。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Java technology, Web developmentArticleID=783265ArticleTitle=面向 Java 开发人员的 Node.jspublish-date=

我要回帖

更多关于 nodejs前后端交互 的文章

 

随机推荐