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
步骤2
装置express框架,敕令行:npm install express –save
运用敕令利用能够用typescript语法用express框架,敕令行:npm install @types/express –save,这个是express的定义文件
步骤3
启动服务器,敕令行:node build/aution_server.js 显现以下则启动胜利
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文件的代码。
在此过程当中,(.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中,不必随意马虎运用注解,有能够形成毛病。
须要把这个设置文件设置到项目中,package.json
修正客户端要求途径:
从新运用敕令行:npm run start启动客户端angular项目,发明照样没法猎取数据,由于客户端发送要求途径为api/products ,故修正web服务器途径为
效果:
到这里,运用nodejs建立web服务器,angular项目客户端运用http接见web服务器就完成了。
注重点:http是异步要求,当你须要用到要求返回值的时刻,须要肯定运用时价是不是已返回。这里很轻易被忽视,致使读值毛病,很有能够你运用值的时刻,http要求还没有返来。
处理的要领应当许多,现在我的做法是把这赋值的语句和http要求在统一线程中实行,即在收集要求线程中实行。