资讯专栏INFORMATION COLUMN

Angular4之五 服务器通讯

Taste / 1978人阅读

摘要:可以与任何支持与服务器进行通讯。首先,我们使用用语言创建一个服务器。一创建服务器步骤创建一个空的项目,取名为,名字可以按照情况而取。中,处理异步代码通常有种方式回调承诺可观察对象使用命令行组件名实例组件名为。运行时发生错误,提示改为则正常。

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请求在同一线程中执行,即在网络请求线程中执行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93517.html

相关文章

  • angular4学习记录 -- 组件通讯、生命周期

    摘要:每完成被投影组件内容发生变化时调用。每次做完组件视图和子组件视图的变更检测之后调用。组件销毁时调用,主要用于内存回收。策略策略是当组件的输入属性发生变更时才会检查当前组件及其子组件。 angular4 组件通讯、生命周期 主要通讯形式 父组件通过属性绑定到子组件,子组件通过事件传递参数到父组件 父组件通过局部变量获取子组件的引用 父组件使用@ViewChild获取子组件的引用 两个不...

    shadajin 评论0 收藏0
  • Angular4学习笔记——组件之间的交互

    摘要:具体思路子组件暴露一个属性,当事件发生时,子组件利用该属性向上弹射事件。父组件绑定到这个事件属性,并在事件发生时作出回应。这个组件子树之外的组件将无法访问该服务或者与它们通讯。父子组件通过各自的构造函数注入该服务。 通过输入型绑定把数据从父组件传到子组件 Angular对于父组件 => 子组件的数据通信做法和Vue很相似。 // 父组件html模板 // 子组件接收数据 i...

    Guakin_Huang 评论0 收藏0
  • 利用angular4和nodejs-express构建一个简单的网站(一)——构建前后端开发环境

    摘要:安装好后,在命令提示符下输入回车后就会自动安装好的最新版本,如果你的网络环境和我的一样,处处受限的话,我建议你先安装后,利用安装。好了,基本的前端和后端程序已经构建完成了,下面需要对前端和后端环境进行一下配置。 学习了一段时间的angular4知识,结合以前自学的nodejs-express后端框架知识,做了一个利用angular4作为前端,node-express作为后端服务器的网站...

    Lyux 评论0 收藏0
  • Angular4 实战开发

    摘要:实战系列目前处于章节不定,内容不定阶段,这一系列文章不会长篇大论的讲解概念,而是以用为主,结合通俗易懂的实例来让大家理解常用的知识点。原文链接实战开发 《Angular 实战系列》目前处于章节不定,内容不定阶段,这一系列文章不会长篇大论的讲解概念,而是以用为主,结合通俗易懂的实例来让大家理解常用的知识点。 章节 Angular CLI 创建组件(Component) 使用CSS美化组...

    Hegel_Gu 评论0 收藏0

发表评论

0条评论

Taste

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<