为什么使用sails.js

做销售一般需不需要、用不用陌拜啊_百度知道
做销售一般需不需要、用不用陌拜啊
陌拜:【保险/房产 术语/营销词汇】指不经过预约直接对指定的陌生人进行登门的陌生拜访,通常是一家挨着一家进行拜访。没有特定的拜访对象。是业务人员常用的寻找客户的方式,也称为扫街或者扫楼。如何进行成功陌拜说实话,其实我一般不太推崇一开始就实行陌拜来进行客户开发的。随着现代社会客户的越来越专业化,很多sails还在用传统的电话行销技术,这样势必很难约见到客户,而大部分sails(top sails)除外,往往都有一个知难而退的不良习惯,当打了1-2次电话受阻后,往往就会避开电话这个环节,实现陌拜。然而,大多数的陌拜都是无功而返,因此,如何科学高效的实现陌拜,就被迫提上了议程。
-----题记我们先来看2个案例。小王是A广告公司的业务员,在公司的业务开展之际,苦于没有客户资料和联系方式,于是在工作之初,果断的选择了陌拜。第一天,小王信心满满的找好了客户的项目地址(小王负责的是公司房地产行业),即刻出发。晚上回来的时候,垂头丧气,像一只斗败了的公鸡,原因是客户现在的项目还在在建阶段,营销中心都还没有开放,诚然没法找到营销中心的主要负责人。当晚晚会上,小王公司的主要领导对其指出了这次陌拜的失败主要原因。第二天,小王调整了陌拜的思路,陌拜前先通过项目电话了解到客户的项目营销中心是否开放了,营销中心的主要负责人是否在项目上办公?做好这些准备工作之后,小王又信心满满的出发了,晚上回来,却依然两眼无光。结果是,他今天是找到了项目负责人,但是该项目目前已经是尾盘阶段了,只有几套房源了,现在几乎不做任何推广。在以上案例中,小王的陌拜失败的主要原因归结为:陌拜前的客户准备工作不充分。做好成功的陌拜,准备工作非常重要。一、陌拜前:你不得不做的几项准备工作在我们的生活中,出现小王类似情况的业务员,举不胜举,这种无序的陌拜,一则加大了时间成本,二则自身信心倍受打击。每天的工作效率不高,久而久之,如果无法正确调整心态,业务员会越来越士气下降,甚至有可能选择“远走他乡”,这样无论于己还是对于公司,都是一个不小的损失,因此,做好陌拜前的准备工作势在必行。1、对于地产客户来说,在拜访前,我们必须通过网络搜索,了解到项目的进程情况,一般情况下,传统地产类的专业门户网站如新浪乐居、搜房网等都为我们做好了前期的客户资料搜集,但是并不一定完全准确,于是,我们需要通过这些网站提供的售楼热线,以客人的身份对其来一个实际“踩盘”,如果客户项目营销中心尚未开放,那么我们可以判定的是,营销中心的负责人一般不会在项目上办公,那么我们陌拜的话,就应该选择在客户的办公地点进行陌拜。2、对于营销中心开放,营销中心负责人在项目办公的客户,我们也不要盲目的去选择陌拜。根据各自不同属性的媒体来选择项目进度,如果是传统品牌性媒体,我们更多的选择要在客户项目在建以前去选择陌拜;对于促销型的媒体,我们则必须选择那种进入认筹、开盘、热销的项目进行陌拜。如果你是促销型的媒体,客户还在品牌推广期,合作的可能性不大,同时,如果客户项目已经进入尾盘阶段,那么选择促销的可能性也比较少。因此,我们在陌拜前,必须弄清楚客户项目现在所处阶段,从而选择是否进行陌拜。3、做好上述两手准备后,就是对客户的基本结构要有一个清晰的了解。以地产客户为例,一般项目上的销售人员分为两块,一方是甲方即开发商的销售,一方是乙方即代理商的置业顾问。我们很多业务人员去到项目上或者在电话中,不管三七二十一,找到置业顾问,就开始询问开发商的营销总监或者策划经理。结果显而易见,你很难找到关键人,因为他们根本就不是一个公司的嘛!何况作为置业顾问,他所关注的只是销售业绩的问题,与销售无关的事情,才懒得搭理你哦,除非你能给他带来销售业绩上的帮助或突破。因此,实现陌拜,我们尽可能的选择销售经理(销售部经理一般都是开发商的,对于开发商的情况比较熟悉,且他与策划经理同属于营销中心)。其次,我们尽可能的寻找与其谈销售有关的问题,带客户买房、帮客户卖房、自己买房、帮朋友了解项目情况等多种形式作为突破口。4、接下来的准备工作就是客户项目解决方案的准备了,我们很多营销人员,苦尽甘来,千辛万苦见到客户的关键人后,但是大多不能针对客户的项目进行一个全新的解决方案,大多是产品介绍云云,即使见到关键人后,也很难促进客户的购买欲望,同样会导致陌拜效果不大。甚至第二次都不太想和你见面了,这一块知识,我会在后期的客户拜访和面谈里会具体谈到。5、最后需要做的就是平时大家平常会做的准备工作了:名片、资料、拜访路线、项目情况资料等等,这些大家都做过了,所以不说了。从上来看,真正做好客户的陌拜工作,这些准备工作,你做到了吗?如果没有做到?又何谈成功陌拜呢?二、陌拜前的目标设定:主要目标与次要目标设定必不可少除了我们前面讲的准备工作之外,每天陌拜前的目标设定也变得非常重要,像前面案例的小王,为什么最后会变成斗败的公鸡,大多来源于自身没有一个清晰的主次目标的设定。主要目标:当天拜访最主要希望达成的目标(找到关键人?让关键人接受我?还是让关键人接受我的方案?)次要目标:当主要目标未达成的时候,我至少需要达成的目的和目标(了解清楚客户项目情况?认识一个人回来?摸清客户公司的内部情况?)我们很多的营销人员最容易犯的错误就是,每天如果主要目标没达成,就垂头丧气的离开客户那里了,不去设定次要目标,这样的陌拜,每天都感觉自己没有收获,自然不能成为“公鸡中的战斗机”。如果准确设定好次要目标,即使主要目标没有实现,次要目标达成了,今天的陌拜也是有收获的,我们经常见到很多营销人员,都觉得今天一无所获。因此,准确设定每天陌拜的主次目标,灰常重要哦。三、陌拜过程中的必胜法。其实要成功陌拜并不是难事,销售经理不告诉你,也不是难事。一般来说,地产公司营销办公区都在二楼,一楼大多是销售区域,因此,我们不必太多纠缠在一楼的销售区,直奔二楼,如果二楼不见的,就问保安,掏出名片,说出需要拜访营销中心负责人的名字(前期资料搜集中通过网络查询到,一般营销中心总监都可查到姓名)。上到营销办公区以后,我们不要胆怯,有独立办公室的,我们都敲门进去,理由就是:是xx媒体的,请问他策划部在什么地方?顺便交换一个名片,作个自我介绍。问得策划部办公地方后,杀将过去,就说刚才见过xx老总(一般有独立办公室的,大多是总监级以上的)。过来找下策划部负责人。这种情况下,一般我们都可以见到策划部负责人,会让策划部误以为我们是xx老总介绍过去的。第二种情况就是:如果预约过策划部同事的,我们也可反过来继续去拜见营销总监、副总,就说我是xx媒体的,刚见过策划部xxx,看见xx总在办公室,过来打个招呼。顺便做个自我介绍,这样,我们不仅见到了营销中心的决策人,也见到了营销中心的关键人,一箭双雕撒。四、陌拜过程中须注意的几个问题。1、客户胆怯和害怕失败的心理:其实这是每个做营销人员都不应该有的心态了,但是我们很多营销人员,让他去敲xx老总的门,感觉都怕怕呢2、只要去了客户公司那边,每天多从几个部门下手:营销中心见不到,俺就见行政部,行政的见不到,我就见前台,前台搞不定,我就搞后台,呵呵,就是销售、客服部等其他部门了,实在不行,保安也要拿下,反正,我就是不能空手而归,要知道,这些人员今后很可能就是你成功的基石和卧底哦。3、陌拜以后,不能见完一个人就立马打道回府,见完策划,也要去见见销售经理嘛,道理吗?你懂的4、多发名片,不要只把名片发给你要找的那个人,只要是那个部门的,看看谁有空的,就派发一张名片嘛,交换交换,好办事撒。体现热情
其他类似问题
为您推荐:
提问者采纳
公司提供给你的资源也是很有限的,你刚毕业没有什么客户资源,如果需要开拓市场的就需要陌拜,现在做销售很多是需要陌拜的你说的陌生拜访不仅仅在保险行业
其他1条回答
刚毕业几要挑战自己不愿意做的事情,很锻炼人的都是为客户服务的一部分,当你都理顺了
做销售的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁习惯用语_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||文档简介
&&英​语​电​影​中​常​用​的​习​惯​用​语​,​ ​非​常​地​道​!
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩14页未读,继续阅读
你可能喜欢n. [船] 帆;航行(sail的复数)
v. 扬帆;乘船航行(sail的第三人称单数)
严重急性呼吸综合征(Severe Aoule Lespiraloly Syndrome)
答:严重急性呼吸综合征(SAILS)预防措施包括保持室
内空气流通及培养良好的个人健康生活习惯。
基于23个网页-
非典型肺炎
2.1传染性非典型肺炎(SAILS):有关专家认为其病原可能是冠状病毒的变异,是由动物传给人的。
基于13个网页-
英语单词解释,worry ...
oars 桨(复数)
sails 航行
machine 机器 ...
基于8个网页-
北京博信众达网络科技有限公司联系人:汪政先生(SAILS),北京博信众达网络科技有限公司电话:86-010-,北京博信众达网络科技有限公司传真:86--,北京博信众达网络科技有限公司地址...
基于6个网页-
美国着名航海品牌
红帆户外用品有限公司
海员度假村
竞技风帆网
绷紧的鼓膜
更多收起网络短语
- 引用次数:7
参考来源 - 船舶风帆助航的实验研究
(潜水艇的)潜望塔
&2,447,543篇论文数据,部分数据来源于NoteExpress
a large piece of fabric (usually canvas fabric) by means of which wind is used to propel a sailing vessel
an ocean trip taken for pleasure
traverse or travel by ship on (a body of water)
&We sailed the Atlantic&; & He sailed the Pacific all alone&
move with sweeping, effortless, gliding motions
&Shreds of paper sailed through the air&
travel in a boat propelled by wind
&I love sailing, especially on the open sea&
travel by boat propelled by wind or by other means
&The QE2 will sail to Southampton tomorrow&
以上来源于:
风帆,帆篷
(风车等的)翼板,起帆作用之物
船,(尤指)帆船
航行;航程
[集合词]帆;帆船
【航海学】(潜水艇的)潜望塔
[复数] [俚语]制帆工;修帆工
【历史】帆具掌管官
[S-]【天文学】船帆(星)座
(船)扬帆,航行,行船:
a ship that sails
航行的轮船
乘船航行,搭船外出:
to sail to New Zealand
乘船去新西兰
(尤指体育竞技)驾驶帆船:
to sail in the sea
在大海上比赛帆船
(像帆船般)平稳地前进,滑进:
to sail into a room
平稳地步入房间
[口语]快速前进
(女人)以优美的步态走:
She sailed into my sitting room.
她步态优雅地走进我的起居室。
庄重地前进;轻松地行进:
He sailed into the meeting place with his head up.
他昂着头庄重地步进会场。
to sail in the sky
在空中翱翔
启航,开船:
The ship sails at eight in the morning.
该船在早晨八点钟启航。
(货物等)被海运:
The goods that they were sailing to us would arrive soon.
由他们海运过来的货物很快就要运到了。
(尤指)(服用麻醉毒品后)迷醉
航行,在…上航行:
to sail Changjiang River
在长江航行
飞行;飘浮:
the moon sailing through the clouds
在云朵中穿行的月亮
驾驶(帆船等):
to sail a boat with Jack
与杰克一起驾驶帆船
漂浮(玩具船等):
Little Sue sailed her paper ship in the spring.
小苏在小溪里放漂她的纸船。
使飘飞,使飞翔:
to sail a playing card
打出一张纸牌
at full sail
【航海学】张满帆地
全速地,快,迅速地
back the sails
调整帆使船后退
crowd (或clap on) (all) sail(s)
【航海学】全速前进
fill the sails
go for a sail
haul in one's sails
约束自己的行为;节制自己的欲望
Hoist (your) sail when the wind is fair.
[谚语]趁热打铁。
lower one's sail
落帆;停船
[转义]收敛;甘拜下风,认输
启航;扬帆
出发;离开
pack (或 put)on all sail
扯起所有的帆;竭尽全力
sail against the wind
sail before the wind
sail close to(或near the wind)
扬帆,启航
shorten sail
收帆;放慢速度
strike sail
(因风暴等)突然收帆
收敛;认输,投降
take in sail
减少帆数,下卷风帆,减速
抑制欲望;减少活动,收敛
take the wind out of somebody's sails
trim the sails (to the wind)
under sail
扬着帆,在航行中
更多收起结果
以上来源于:《21世纪大英汉词典》
Sails are large pieces of material attached to the mast of a ship. The wind blows against the sails and pushes the ship along. 帆
The white sails billow with the breezes they catch.
片片白帆随风扬起。
You say a ship sails when it moves over the sea. 航行
The trawler had sailed from the port of Zeebrugge.
那只拖网渔船已经从泽布吕赫港启航。
If you sail a boat or if a boat sails, it moves across water using its sails. 驾驶 (船); (船) 扬帆航行
His crew's job is to sail the boat.
他的船员的职责是驾船。
I'd buy a big boat and sail around the world.
我要买条大船航游世界。
When a ship sets sail, it leaves a port. 启航
He loaded his vessel with another cargo and set sail.
他又往他的船上装了一件货就启航了。
启航;张帆
船开向…;乘船往…
仪态万方地走进来;劲头十足地行动起来;【口】毅然出面
开船,动身
在航行中;扬帆
轻快地走过
◎【航海学】顺风航行
◎取得成功;发迹;一帆风顺
收帆;放慢速度
v. 张帆;启航
行船;驾船
船驶入;痛骂;仪态万方地走进
跳过,突出
出航;开船
太阳帆;太阳反射器
满帆(影片名称)
更多收起词组短语
They clapped on more sails.
他们急速张开更多的帆。
The sails were boomed out.
帆被张帆杆张开了。
They strained at the ropes to balance the sails.
他们用力拉得绳子以保持帆的平衡。
A young boy named Max runs away from his mother and sails to an island full of frightening-looking creatures.
VOA: special.
Peter's new fleet, we'll talk about his new fleet, which he oversaw and, in a very minor way, helped build himself, sails down the Don River in 1698 and takes the Turkish port of Azov, A-Z-O-V, on the Sea of Azov.
我们接下来讲讲彼得的新舰队,尽管影响不大,但他亲自监督,并且参与组建了这个舰队,舰队于1698年沿顿河顺流而下,直取土耳其的亚速港,在亚速海上
The stage itself becomes the ship's surface with sails and rigging.
VOA: special.
The sun is falling, silhouetting the forested skyline and covering our sails in its yellowy glow.
As we talked, feluccas, traditional wooden boats with lateen sails, cruised by the windows.
He aimed the bow of the boat toward the wind so the sails would go slack.
点击关注有道词典
$firstVoiceSent
- 来自原声例句
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
与许多服务器端 JavaScript 框架一样,Sails.js 使构建传统的 Web 应用程序变得更简单。Sails 还包含一些给 Rails
带来革命性变化,给 Node.js 之上的 Web 和移动开发带来全新的生产力水平的理念。本系列的第一部分概述 Sails 的与众不同之处,包括它的新派 MVC
架构方法。您还会设置您的开发环境,将一个基本的 Sails 应用程序部署到 IBM Bluemix™。
, 负责人, Neward & Associates
Ted Neward 是一位国际知名的作家、演讲家、开发人员和教师。他撰写了 250 多篇文章和数十部图书,涵盖许多技术,包括
.NET、iOS、Java、Android 和 JavaScript。他和妻子,以及两个孩子居住在西雅图,他的家里拥有 9 台笔记本电脑、14
个移动设备和 2 只猫。
您是否曾经在一个食品店的奶酪货架旁徘徊,被来自全世界的奶酪引人入胜的包装搞得不知所措?这也没什么,但麻烦在于决定将哪种奶酪带回家。奶酪选择如此丰富,以至于成为了选择悖论 的完美例子,该原则表明没有选择是件坏事,但拥有太多选择同样是件坏事,而且有时会导致用户完全放弃选择。寻找 Node.js 框架或库的开发人员就面临着这个问题,这是一个虚拟的有钱人窘境。很难知道从如此多的选项中选择哪一个,更不用说如何开始使用一个 Node.js
框架了,或者是哪些因素将帮助您决定它是否是正确的选择。选择 Sails.js考虑到过多的选项,在选择 Sails.js 之前,我需要艰难地排除一些备选选项。我喜欢 Sails,因为它包含的一些想法已使 Rails 框架变得如此成功,同时保持着一个明显的
Node.js 风格。具体来讲,Sails 使用分层开发和约定优于配置(convention over configuration),这两种开发技术已被 Rails
和类似的框架普及。Sails 还集成了其他一些 Node.js 包作为关键组件,这意味着您不需要从头学习该框架。另一个优势是,事实上 Sails.js
的文档在不断改进,这是我在任何开源项目中都要寻找的一个关键指标。在第一部分中,我将重点介绍 Sails 如何实现分层开发。未来的几部分将介绍约定优于配置和使用 Sails 编码的其他便捷性。新 MVC“对传统 MVC
架构的这种重新配置,实现了架构师和开发人员长久以来在应用服务器中寻找的东西:一个包含业务逻辑和验证的单一位置,以及一个用于多个客户端的通用接口。”Sails 的分层开发方法与许多传统 Web 开发人员可能期望的不同。事实上,Sails 是新兴的框架种类中的一个,这些框架通过调优 MVC 而重新定义了 Web
应用程序开发的前景。与传统的 MVC 架构中将 MVC 组件放在服务器上不同,Sails 将模型和控制器放在服务器上,而视图位于客户端层。Sails 还将 “视图”
视为一种更加一般性的概念;它可以是 HTML,但它也可以是一个在原生 iOS 或 Android 中编写的移动应用程序。不同于由服务器向客户端传送回 HTML,Sails 仅传送数据(通常为 JSON 或 XML 格式)。然后,客户端(一个移动应用程序或使用 AngularJS 等客户端
JavaScript 框架编写的单页 Web 应用程序)使用该数据,并以最适合客户端的方式呈现它。对于大部分客户端,数据表示格式将为 JSON,因为许多单页 Web
和移动客户端都是使用 JavaScript 编写的,而且可以轻松地使用 JSON。而且如果有必要,采用像 XML 这样的不同的数据表示格式也不难。对传统 MVC
架构的这种重新配置,实现了架构师和开发人员长久以来在应用服务器中寻找的东西:一个包含业务逻辑和验证的位置,以及一个用于多个客户端的通用接口。服务器仅需要以一种可被客户端识别的表示设计数据元素,此方法提供了一种通过
HTTP 端点执行传统业务逻辑和数据验证的轻松方式。HTTP API 示例应用程序这种新架构(我称之为 HTTP API)类似于 RESTful 风格,但它实际上不是 REST — 至少依据 Roy Fielding 的
来讲不是。REST 依靠超媒体的交换作为表示应用程序状态的主要手段(这就是 Hypertext As The Engine Of Application State 或 HATEOAS
原则 — 可能是迄今为止发明的最差劲的缩写)。但 HTTP API 系统放弃了 REST 提供的一定的灵活性和 “通用客户端” 功能,以换取更简单的模型。不同于 REST 系统,HTTP API 客户端需要它们与之通信的系统的一定的推断性知识。它们需要提前知道预期的结果和可用的端点。这与 REST
架构相反,但我发现它所换来的简单性物有所值。在一个 HTTP API 中,客户端与服务器之间的所有通信在 HTTP 上发生。对于示例应用程序,我将使用 JSON 作为交换的数据格式,使用标准 HTTP 洞察来表示操作(GET
表示读取,POST 表示插入,PUT 表示更新,DELETE 表示删除)。我还将使用 HTTP
头部作为传达带外信息的机制,比如身份验证数据等。但是,我仍会将一些状态数据存储在服务器端(与传统的 REST 设计相反),而且交换的数据将全部为 JSON
并假定为特定于此系统。HTTP API 的使用者示例 — 移动应用程序、单页 JavaScript 应用程序或者甚至其他想访问这里包含的数据的服务器 — 将知道我将向它们发回的
JSON 类型。这不同于更具有 REST 风格的超文本/HATEOAS 的关注点,后者演示任何应用程序都应能够 “发现”
发回的信息。更重要的是,使用者将知道它们的数据将发送到、被检索或修改的后续 HTTP 端点。在评估 Sails.js 时,我花了一些时间来试验它。所以言归正传,让我们开始了解 Sails 吧。需要的准备工作:前提软件和设置我希望您对 REST 和 RESTful 架构的原理和术语具有一定的了解;您不需要是发烧友,但您应熟悉 “原生地” 使用 HTTP 来提交 GET 请求、POST
请求等。您不应被查看动态的 HTTP 请求的想法吓到。我还假设您熟悉 JavaScript、Node.js 和 npm(JavaScript 代码和库的包管理器)。您应在所选的开发环境上安装了 Node.js,知道如何在本地运行
Node.js 应用程序,并能够自行使用 "npm-install" 安装软件包。尽管查阅所谓的 现代 JavaScript 很有帮助(具体来讲,Douglas
Crockford 在
或它所催生的许多图书或教程之一中描述的 JavaScript),但事实上,您仅需要 JavaScript 的实用知识即可开始使用
Sails。对于您的开发环境,请确保您机器上的 Node.js 是最新的(截至编写本文时,我的版本是 0.12.7),而且您安装了最新的 npm 版本(我的版本是 2.12.1)。尽管
Node.js 社区明显在尝试保持各个版本向后兼容,但无法保证我在这里编写的代码就适用于该技术的早期版本。一经出售,概不负责。安装 Sails.js 和
MongoDB使用 Sails.js 唯一需要的安装是在全局上将它安装到 npm 缓存,就像这样:npm install -g Sails.js。完成之后,您将拥有一个实用程序命令 sails 可供使用。像 npm 一样,sails 是一个使用 JavaScript 为
Node.js 编写的命令行实用程序。它充当着使用 Sails.js 框架执行多种操作的单一来源实用程序 —
比如创建一个新应用程序,运行该应用程序,在调试循环中运行该应用程序,为该应用程序生成新组件,等等。通过 npm 安装 Sails.js 时,一定要使用 -g
选项。否则,它将仅安装在当前的项目目录中,而且这是该实用程序真正需要全局化的少有情况之一。在等待 Sails.js 框架下载和安装期间,请花片刻时间确保您已在开发环境中设置了 MongoDB。如果没有设置,现在正是
的好时机。请注意,Sails.js 使用的不仅仅是一个 MongoDB 后端;事实上,Sails.js
开箱即用地使用了一种基于磁盘的轻量型格式。这不是用于生产用途的推荐设置,但非常适合像我们这样的示例。到达本系列中使用 MongoDB
的部分还需要一段时间,但在我使用它时您一定很高兴拥有它。这是目前需要的基本设置。在本教程后面将本地应用程序部署到 Bluemix 云时,您将需要向资源组合中添加一个
和一个 。检查安装Sails.js 完成安装了吗?使用命令 sails version 验证它。截至编写本文时,Sails.js 的最新版本是 0.11.0。只要上面的命令生成的输出不是错误,就表明 Sails 已安装并准备好使用。Sails.js 显示 "Hello, world!"根据惯例,程序员在学习一种新语言或环境时所做的第一件事是使用该语言编写最简单的程序:一个 Hello World 应用程序。幸运的是,Sails 生成了一个 Hello World
作为您创建一个新应用程序时的基本应用程序框架。我可使用此应用程序确认 Sails 基础架构有效。为了向敏捷开发战略致敬,我还将该框架部署到云(在本例中为 Bluemix)中,作为
“尽早发布,经常发布” 战略的一部分。创建一个基本的 Sails.js 应用程序获取一个新 Sails.js 应用程序非常简单。请注意,默认情况下,该框架将生成一个更传统的 Web 应用程序,其中服务器生成的 HTML
会发回到客户端。尽管这本身很有用,但如果目标是构建一个对客户端不可知的 HTTP API,我希望确保没有意外 "泄露"
将客户端与服务器捆绑在一起。为此,最佳方式是构建一个在项目任何地方都没有客户端组件的服务器。在 Sails.js 中,这非常简单,只需将您的默认配置设置为
--no-frontend。使用 --no-frontend 选项的不足之处是,我没有可视的方式来确认该框架有效。我希望在将应用程序部署到 Bluemix
时执行该验证。所以在第一部分中,我将创建拥有漂亮的 HTTP 前端框架的应用程序,但在未来的几个部分中,我会假设该应用程序构建时未使用任何前端部分(差别仅在于生成的 views
目录中填充的内容,所以它没有可能看起来那么复杂)。闲话少说。我们实际操作一下吧!从开发机器上您想要代码所在的目录,通过 sails 命令行发出一个 new 命令,然后命名您的应用程序:sails
new hello-sails。完成这一步后,Sails 将等待片刻,然后回复一条类似这样的消息:"Created a new Sails app 'hello-sails'!"(如果返回了任何其他信息,可能您的
Sails.js 安装某处出错了。)在目标目录中(根据应用程序名称推断而来),您会看到 Sails.js
生成了许多目录和文件。我将在整个系列文章中更详细地介绍其中大部分内容。就现在而言,您只需熟悉 Sails 应用程序的基本知识。一般而言,可以安全地假设创建框架不会有任何问题(只要没人接触它),但知道如何在本地运行该应用程序会很有帮助。我们通过一个 "sails lift" 来开始我们的操作。图 1. 在本地运行 Sails.js非常漂亮,不是吗?就个人而言,我喜欢这种颜色的用法,此外这也正是 ASCII 作品令人印象深刻的显示形式。更重要的是,这个小型 ASCII 图像确认 Node.js
正成功地在本地机器的端口 1337 上运行我们搭建的应用程序。在浏览器中访问它,将出现默认的 Sails.js 网页,其中包含连接回主要 Sails 主页和文档的链接。将 Sails.js 部署到云在本地机器上运行与将代码部署到生产(或准生产)服务器不同,这时就需要使用云。对于本系列文章,我将使用 Bluemix 作为云主机。它看起来非常合适,而且 Bluemix
是一个容易用于托管基于 Node.js 的应用程序的平台。Bluemix 也恰好基于 Cloud Foundry,所以如果您还没有
(cf),现在是时候安装它了。您将希望在托管您的 Sails.js 代码的同一台机器上运行它。安装客户端后,运行 cf--version 来验证安装;在编写本文时,回送的版本是 6.12.2。如前所述,您还需要一个
来将应用程序部署到
Bluemix。获得您的凭据后,登录到 Bluemix 并将代码从您本地的 hello-sails 目录推送到 Bluemix 云。清单 1. 使用 cf 推送到
BluemixTeds-MBP15:hello-sails ted$ cf login
API endpoint: https://api.ng.bluemix.net
Authenticating...
Select an org (or press enter to skip):
1. developerWorks
Targeted org developerWorks
Targeted space Ted Neward
API endpoint:
https://api.ng.bluemix.net (API version: 2.27.0)
developerWorks
Ted Newardcf 工具也需要知道要用于部署的 API 端点。如果 cf 无法确定该端点,您可通过命令 cf api
api.ng.bluemix.net 手动设置它 (api.ng.bluemix.net)。两个有用的文件登录并设置 API 端点后,您将使用 cf push 将搭建的 Sails.js 应用程序部署到云。Cloud Foundry
仅需要一些参数即可正确地部署该应用程序。无需反复键入这些参数(它们会烦人地不断增加),可创建一个清单文件 (manifest.yml)。这将包含一些信息,比如要在 Bluemix
云上使用的应用程序名称,要用于一个子域的主机名(如果它与应用程序名称不同),要为执行保留多少 RAM,等等。示例的简单清单文件:---
applications:
- name: tedneward-sailsIntro
host: tedneward-sailsIntro
memory: 256M
command: node app.jsCloud Foundry 能识别的另一个有用文件是 .cfignore。它包含不应从本地应用程序推送到云的文件或目录列表。就现在而言,记录该信息只是为了未来参考。有了该清单文件,仅剩下执行 cf push 来让 push
命令完成自己的任务了(来自此命令的输出有时非常长,因为代码必须打包、上传、解包,然后安装在云实例上,这进而意味着需要在云实例上运行一次 npm
install,这会生成大量结果。因此,这里仅显示了前 20 行和最后 6 行输出)。清单 2. 使用 cf push 推送到
Bluemix清单 2. 使用 cf push 推送到
BluemixUsing manifest file /Users/ted/Projects/sails-intro/code/hello-sails/manifest.yml
Updating app tedneward-sailsIntro in org developerWorks / space Ted Neward as ...
Using route tedneward-sailsIntro.mybluemix.net
Uploading tedneward-sailsIntro...
Uploading app files from: /Users/ted/Projects/sails-intro/code/hello-sails
Uploading 31M, 11773 files
Done uploading
Stopping app tedneward-sailsIntro in org developerWorks / space Ted Neward as ...
Starting app tedneward-sailsIntro in org developerWorks / space Ted Neward as ...
-----& Downloaded app package (24M)
-----& Downloaded app buildpack cache (18M)
-----& IBM SDK for Node.js Buildpack v2.5-6
Based on Cloud Foundry Node.js Buildpack v1.5.0
-----& Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NPM_CONFIG_PRODUCTION=true
NODE_MODULES_CACHE=true
-----& Installing binaries
engines.node (package.json):
unspecified
engines.npm (package.json):
unspecified (use default)
App tedneward-sailsIntro was started using this command `node app.js`
Showing health and status for app tedneward-sailsIntro in org developerWorks / space Ted Neward as ...
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: tedneward-sailsIntro.mybluemix.net
last uploaded: Mon Oct 5 01:36:54 UTC 2015
stack: lucid64
buildpack: SDK for Node.js(TM) (ibm-node.js-0.12.7)假设您已正确上传和安装所有组件,您应在 Bluemix 上看到一个新子域(在我的例子中,该子域为
http://tedneward-sailsIntro.mybluemix.net)。新子域将生成 Sails.js 示例欢迎页面来响应一个 HTTP GET
/ 请求。结束语有了该框架,我就准备好开始扩展和改进示例应用程序了。得益于目前完成的工作,我将能够在每次完成一个新部分时,将新代码部署到 Bluemix 云。请记住原则 “不断发布”
— 或换种说法
“尽早发布,经常发布”。每次我将代码推送到服务器供其他人使用,我都在给其他人创造机会来寻找错误,确认我的代码在朝正确的方向发展,等等。使用一个被广泛接受的云基础使发布变得非常轻松,因为我已提前完成了大部分工作。使用一个简单的
cf push,Sails 应用程序的最新版本将时刻等待着 HTTP 客户端找到和使用它。下一篇文章将介绍 Sails.js 模型。在介绍模型的过程中,我们还会介绍大量 Sails 约定,称为蓝图或 Sails Blueprint API。就像它的灵感之源 Rails
一样,Sails 喜欢约定高过配置,这意味着我将能够构建模型,获得一些现成的有用功能,而无需编写大量配置文件或代码。我现在已有一个框架,但在接下来的几个教程中形成的示例应用程序将是一个博客引擎 — 经过了一定的修改。不同于将该引擎构建为一个传统的服务器端 Web
应用程序,我会将它开发为一个 HTTP API。该 API 将我需要的所有技术都打包到后端,将客户端代码留给有人喜欢编写的前端工具来解决。现在是时候暂停一下了。对于该框架的名称,我们不想说 “再见”,说 “一路平安” 会更合适。
下载描述名字大小示例应用程序的源代码168KB
参考资料 访问
来进一步了解
Sails.js 的方方面面。您会在
的文档页面上找到有关它的大量信息。使用这个便捷的
Bluemix,其中包含一个专门介绍 Node.js 开发的专题。(一个 HTTP API CMS
系统)是本系列教程中使用的示例应用程序的灵感来源。 提供了大量资源。 随时关注专注于各种 IBM 产品和 IT 行业主题的 。 在 。 加入 。联系其他
developerWorks 用户,浏览开发人员推动的博客、论坛、群组和 wiki。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Web development, Open source, 移动开发, Cloud computingArticleID=1022982ArticleTitle=面向 JavaScript 开发人员的 Sails.js 指南: 使用 Sails 构建和部署一个基本 Web 应用程序publish-date=

我要回帖

更多关于 sails.js 的文章

 

随机推荐