情況描述:
1.整體就是一個(gè)Angular項(xiàng)目從Node.js后臺(tái)讀取數(shù)據(jù)的小例子;
2.Angular項(xiàng)目 與 Nodeserver文件夾在同一個(gè)硬盤的不同文件夾;
3.Angular項(xiàng)目端口4200,Node.js端口 8000,所以會(huì)有一個(gè)配置指向;
3.在瀏覽器里單獨(dú)訪問node.js的數(shù)據(jù)可以顯示,angular訪問就找不到了。
搜了一下,應(yīng)該是請(qǐng)求跨域的問題。
答案:
啟動(dòng)服務(wù)的時(shí)候必須用npm run start啟動(dòng),代理才生效,如果用ng serve啟動(dòng)代理不生效
Angular 項(xiàng)目 TS:
import { Component, OnInit } from '@angular/core';
import {Observable} from "rxjs";
import {Http} from "@angular/http";
import 'rxjs/Rx';
@Component({
selector: 'app-product',
templateUrl: './product.component.html',
styleUrls: ['./product.component.css']
})
export class ProductComponent implements OnInit {
dataSource: Observable<any>;
products: Array<any> = [];
constructor(private http: Http) {
this.dataSource =this.http.get('/api/products').map((res) => res.json());
}
ngOnInit() {
this.dataSource.subscribe(
(data) => this.products =data
);
}
}
Angular package.json 配置:
"start": "ng serve --proxy-config proxy.conf.json",
Angular proxy.conf.json 配置:
{
"/api":{
"target":"http://localhost:8000"
}
}
Node.js服務(wù)器端 auction_server.ts:
import * as express from 'express';
const app = express();
export class Product {
constructor(
public id: number,
public title: string,
public price: number,
public rating: number,
public desc: string,
public categories: Array<string>) {
}
}
const products: Product[] = [
new Product(1, '第一個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['圖書1']),
new Product(2, '第二個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['美食2']),
new Product(3, '第三個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['玩具3']),
new Product(4, '第四個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['設(shè)計(jì)4']),
new Product(5, '第五個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['旅游5']),
new Product(6, '第六個(gè)商品', 1.99, 3.5, '這是第一個(gè)商品,是我在',['工作6'])
];
app.get('/',(req,res) => {
res.send("Hello Express!!!");
});
app.get('/api/products',(req, res) => {
res.json(products);
});
app.get('/api/product/:id',(req, res) => {
res.json(products.find((product) => product.id == req.params.id));
});
const server = app.listen(8000,"localhost", () => {
console.log("服務(wù)器已啟動(dòng),地址是:http://localhost:8000");
});
單獨(dú)通過瀏覽器訪問正常顯示:
Angular 找不到數(shù)據(jù):
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。