|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于iOS开发的学习打个比方就像把汽车分解最底层的原料有塑料钢铁再用这些底层的工具造出来发动机座椅最后再加上写螺丝胶水等把汽车就拼起来了iOS基本都是英文的资料在现今这个合作和交际使用的天下里,其关头是要有一个能复杂构建和易于部署的背景。很多构造机构都依附于一个使用栈(ApplicationStack),其利用上面三项手艺:
这个栈关于挪动使用来讲相称盛行,由于原生数据格局是JSON,它简单被使用剖析,比方经由过程利用Cocoa的NSJSONSerialization类或别的相似的剖析器。
在本教程中,你将学会怎样搭建了一个Node.js情况,驱动Express;在此平台之上,你将构建一个经由过程RESTAPI来供应一个MongoDB数据库的服务器,就像如许:
在一个HTML表格中出现的后端数据库
本教程的第二部分重点放在iOS使用端。你将构建一个很酷的叫做“风趣的中央”的使用,标志风趣的地位,让别的用户可以找出他们四周风趣的中央。上面略微窥伺一下你将构建的使用:
TourMyTown的主视图
本教程假定你已懂得了JavaScript和Web开辟的基本,但对Node.js、Express和MongoDB都不熟习。
一个Node+Mongo案例
年夜多半Objective-C开辟者都不太熟习JavaScript,但它关于Web开辟者来讲是极为罕见的言语。由于这个缘故原由,Node作为一个Web框架劳绩了大批人气,但另有更多缘故原由使其成为后端服务的尽好选择:
- 内建的服务器功效
- 经由过程它的保证理器做到优秀的项目办理
- 一个疾速的JavaScript引擎,也就是V8
- 异步事务驱动编程模子
一个异步的关于事务和回调的编程模子十分合适服务器,它要守候很多事变,比方到来的哀求和经由过程别的服务(比方MongoDB)的外部历程通讯。
MongoDB是一个低开支的数据库,其一切实体都是自在情势BSON——“二进制JSON”——文档。这能让你同异构数据打交道,并且处置林林总总的数据格局也变得很简单。由于BSON与JSON兼容,构建一个RESTAPI就很复杂——服务器代码可以传送哀求到数据驱动器而不必要良多的两头处置。
Node和MongoDB在实质上都具有可扩大性,可以轻松地在超过散布式模子中的多个呆板,完成同步;这个组合关于不具有匀称散布负载的使用来讲是一个幻想选择。
进门
本教程假定你利用OSXMountainLion或Mavericks,Xcode及其commandlinetools都已安装好了。
第一步是安装Homebrew。就像CocoaPods为Cocoa办理各类包和Gem为Ruby办理各类包一样,Homebrew办理OSX上的Unix工具。它构建在Ruby和Git之上,并且它具有高度的天真性和可定制性。
假如你已安装了Homebrew,那就能够跳过上面的步骤。否则,翻开终端实行以下命令来安装Homebrew:- ruby-e"$(curl-fsSLhttps://raw.github.com/Homebrew/homebrew/go/install)"
复制代码注重:cURL是利用URL哀求来发送和吸收文件与数据的称手工具。此处你利用它加载Homebrew安装剧本——在本教程前面,你还会利用它与Node服务器交互。 一旦安装好Homebrew,就在终端输出上面的命令:这只是更新Homebrew,让你具有最新的软件包列表。
如今,经由过程Homebrew安装MongoDB,利用上面的命令:记下MongoDB被安装的地位,它就在输入的“Summary”中。稍后你将用它加载MongoDB服务。
从http://nodejs.org/download/下载并运转Node.js安装器。
一旦安装完成,你就即刻测试Node.js是不是安装乐成。
在终端里输出:这能让你进进Node.js的交互式运转情况,在此你能够实行JavaScript表达式。
在提醒符后输出上面的表达式:- console.log("HelloWorld");
复制代码 你将失掉以下输入:console.log在Node.js中相称于NSLog。固然,console的输入流比NSLog的要庞大很多:它有console.info、console.assert、console.error和你希冀的从更先辈的纪录器比方CocoaLumberjack而来的别的流。
写在输入里的“undefined”值是console.log的前往值,而console.log没有前往值。由于Node.js老是显现出一切表达式的输入,不管其前往值是不是有界说。注重:假如你之前利用过JavaScript,你必要晓得Node.js情况和扫瞄器情况之间有些许分歧。全局对象被叫做global而不是window。在Node.js交互提醒符后键进global并按下回车就会显现global定名空间里一切的办法和对象;固然,间接利用Node.js文档来做参考更简单些。:]
global对象有一切预界说的常数、函数和数据范例,都可用于一切运转在Node.js情况里的程序。任何用户制造的变量一样也都增加到全局高低文对象。基础上global的输入将列出一切内存中能够会见的事物。 运转一个Node.js剧本
Node.js的交互式情况关于游玩和调试JavaScript表达式是很棒的,但一般你城市利用剧本文件来做实践的事变。就像iOS使用包括有Main.m作为其出口点,Node.js的默许出口点就是index.js。但是,分歧于Objective-C,这里没有main函数;相反,index.js将从头至尾的实行。
按下Control+C两次以加入Node.jsShell。实行上面的命令,新建一个目次以保留你的剧本:- mkdir~/Documents/NodeTutorial
复制代码 然后实行上面的命令进进新建的目次并利用你默许的文本编纂器新建一个剧本文件:- cd~/Documents/NodeTutorial/;editindex.js
复制代码 在index.js中增加以下代码:- console.log("HelloWorld.");
复制代码 保留你的事情,回到终端实行上面的命令看看你的剧本怎样运转:再一次,我们看到了熟习的“HelloWorld”输入。你也能够实行node.来运转你的剧本,.就会默许查找index.js。
当然,一个“HelloWorld”剧本成不了一个服务器,但这是测试你的安装是不是乐成的疾速体例。下一节将向你先容Node.js包的天下,这会成为你那闪亮的新Web服务器的基本!
Node包
Node.js使用程序都被分红分歧的包,这就是Node.js天下的“框架”。Node.js自带有几个基本且壮大的包,但另有凌驾50000个由活泼的开辟社区供应的公然包——假如你不克不及找到你必要的包,你本人也能够对照简单地制造。注重:检察https://npmjs.org/可失掉一切可用包的列表 用以下代码交换index.js的内容:顺次依照编号好的正文看看:
- require引进(import)模块(module)到以后文件。本次你引进了HTTP库。
- 你创立一个Web服务,它对复杂的HTTP哀求的回应是发送一个200应对,并将页面内容放在应对里。
Node.js作为一个运转时情况的最年夜的上风之一就是他的事务驱动模子(event-drivenmodel)。它环绕着异步伐用的回调函数的观点来计划。在下面的例子里,你正监听3000端口等着传进的HTTP哀求。当你收到一个哀求,你的剧本挪用function(req,res){…}并前往一个应对给挪用者。
保留你的文件,回到终端并实行以下命令:你将在把持台看到以下输入:
翻开你最喜好的扫瞄器导航至http://localhost:3000;好好瞧着,Node.js正在供应给你的是一个“HelloWorld”页面。
你的剧本还在那里,耐烦地守候从3000端口授进的HTTP哀求。要干失落(kill)你的Node实例,只需在终端按下Ctrl+C。注重:Node包一般由顶层函数或引进的对象写就。经由过程利用require,这个函数在以后就被分派给一个顶层变量。如许有助于以一个健全的体例办理局限(scope)和表露(expose)模块的API。稍后在本教程中你会看到怎样创立一个自界说模块,你将为MongoDB增加一个驱动器。 NPM——利用内部Node模块
前一大节掩盖了Node.js内建的模块,那第三方的模块该怎样处置呢?比方你以后必要的Express模块,它为你的服务器平台供应路由两头件。
内部模块一样可使用require函数引进到文件里,但你必要分隔下载它们然后才干用于你的Node实例。
Node.js利用 npm——Node包模块——来下载、安装和办理包依附。假如你熟习CocoaPods大概Rubygems,那末你对npm也会以为熟习。你的Node.js使用程序利用package.json,它专门界说设置和npm依附。
利用Express
Express是一个盛行的Node.js模块,供应路由两头件。为何你会必要这个自力的包呢?思索上面的情况。
假如你只利用http模块本身,你不能不分隔剖析每一个哀求的地位以找出供应甚么内容给哀求者——云云这般,事变很快就会变得难以处置。
但是,用Express你就可以简单地为每一个哀求界说路由和回调。Express一样让为基于HTTP动词(比方POST,PUT,GET,DELETE,HEAD,等)以供应分歧的回调变得很简单。
HTTP动词的扼要先容
一个HTTP哀求包括一个体例——大概动词——的值。默许值是GET,它是为了猎取数据,比方扫瞄器中Web页面。POST意味着上传数据,比方提交Web表单。关于WebAPI来讲,POST一般用于增加数据,但它一样可用于远程处置挪用范例端点(butitcanalsobeusedforremoteprocedurecall-typeendpoints.)。
PUT与POST的分歧在于它一般用于交换已无数据。在理论中,POST和PUT一般以一样的体例利用:在哀求Body里供应实体以放进后真个数据存储里。DELETE用于从你的后端数据存储里移除条目。
POST、GET、PUT和DELETE就是HTTP完成的CRUD模子——Create、Read、Update和Delete。
另有别的一些少有人知的HTTP动词。HEAD体现得像一个GET但只前往应对头而没有Body。这有助于最小化数据传输,假如应对头中的信息充足断定是不是有可用的新数据。别的动词如TRACE和CONNECT用于收集路由。
增加一个包到Node实例
在终端里实行以下命令:这会创立一个新的package.json,它将包括你的包设置和依附。
增加以下代码到package.json中:这个文件界说了一些元数据,比方项目标名字和版本,一些剧本,和关于你的目标来讲最主要的包依附。上面申明每行的意义:
- name是项目标名字。
- version是项目今朝的版本。
- private避免项目被不测地公然,假如你设置其为true。
- dependencies是一个包括你使用利用的模块的列表。
依附以键/值情势承受模块名和版本。你的依附列表包括有3.3.4版本的Express;假如你想指明Node.js往利用最新版本的包,你可使用通配符"*"。
保留文件,在终端里实行以下命令:你会看到以下输入:
install下载并安装package.json指定的依附——和你的依附自己的依附!:]——存进一个叫做node_modules的目次,并让你的使用程序利用它们。
一旦npm完成,你就能够在你的使用程序中利用Express了。
在index.js中找到以下行:并增加Express的require挪用,以下所示:这就引进了Express包,并将其存在变量express中。
由于封闭文档写的相当好在遇到新框架的时候弄明白框架的功能去文档里搜搜框架的ProgrammingGuide很有用要弄明白框架类的继承结构写iOS的程序不一定都是用OBJC |
|