Angular4之五 服务器通信

Angular能够与任何支撑http与websocket服务器举行通信。

起首,我们运用node.js用typescript言语建立一个web服务器。

一、建立web服务器

步骤1

建立一个空的项目,取名为service,名字能够根据状况而取。

运用敕令行,npm init -y 作用:举行初始化,增添一个默许的package.json

运用敕令行, npm i @types/node –save 作用:引入node.js

然则node.js不认typescript,须要把typescript编译成javascript,

起首,新建一个设置文件,取名为tsconfig.json。
写入以下内容:

{
  "compilerOptions": {
    "target":"es5",
    "module": "commonjs",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "outDir": "build",//ts转换成js的文件夹
    "lib": ["es6"]
  },
  "exclude": ["node.modules"]
}

其次,想要ctrl+s自动将ts文件转换成js文件,须要对webstorm举行设置file->settings
《Angular4之五 服务器通信》

步骤2

装置express框架,敕令行:npm install express –save

运用敕令利用能够用typescript语法用express框架,敕令行:npm install @types/express –save,这个是express的定义文件

步骤3

启动服务器,敕令行:node build/aution_server.js 显现以下则启动胜利

《Angular4之五 服务器通信》
node服务器启动后假如发作转变,则不会发作转变,假如要改则须要从新启动服务器,这对开辟非常不方便。

装置插件则能够做到更新,敕令行:npm install -g nodemon

这个插件会监控源代码,假如发作转变会自动加载到服务器。
用这个敕令启动项目:nodemon build/aution_server.js

二、Angular项目中运用http举行通信

一般我们愿望在 HTTP 要求的时刻,页面不会落空相应,所以我们的 HTTP 要求是异步的。

JavaScript 中,处置惩罚异步代码一般有3 种体式格局:

1.回调(callback)

2.许诺(promise)

3.可视察对象(observable)

1、运用敕令行:npm g component [组件名] 实例组件名为product。

下图为product.component.ts文件的代码。
《Angular4之五 服务器通信》

在此过程当中,(.map)碰到一个题目,报错。

毛病信息为:This import is blacklisted, import a submodule instead

处理要领:引入rxjs文件。

引入要领:参考了https://poychang.github.io/an…,import ‘rxjs/Rx’ 仍然是以上毛病信息。

改用‘rxjs/rx’ 则不会在代码报错。运行时发作毛病,

提醒:TypeError: this.http.get(…).map is not a function

改成’rxjs/add/operator/map’ 则一般。可点击毛病信息检察原文档。

2、设置angular敕令行,发送要求到相对应的服务器

项目根目录新建一个设置文件,这里为proxy.conf.json。注重json中,不必随意马虎运用注解,有能够形成毛病。
《Angular4之五 服务器通信》

须要把这个设置文件设置到项目中,package.json
《Angular4之五 服务器通信》

修正客户端要求途径:

《Angular4之五 服务器通信》
从新运用敕令行:npm run start启动客户端angular项目,发明照样没法猎取数据,由于客户端发送要求途径为api/products ,故修正web服务器途径为
《Angular4之五 服务器通信》

效果:

《Angular4之五 服务器通信》

到这里,运用nodejs建立web服务器,angular项目客户端运用http接见web服务器就完成了。

注重点:http是异步要求,当你须要用到要求返回值的时刻,须要肯定运用时价是不是已返回。这里很轻易被忽视,致使读值毛病,很有能够你运用值的时刻,http要求还没有返来。
处理的要领应当许多,现在我的做法是把这赋值的语句和http要求在统一线程中实行,即在收集要求线程中实行。

    原文作者:Mandy
    原文地址: https://segmentfault.com/a/1190000013829675
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞