[英]How to write frontend (angularjs) to backend (nodejs)?
所以我把头撞在墙上:
服务端JS
const express = require('express');
const app = express();
//const app = require('express')();
const cors = require('cors')
const bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public'));
//Enable CORS
app.use(cors());
const polls = [
{
...
}
];
//Enable CORS
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(bodyParser.json());
app.get('/polls', (req, res) => {
let result = {polls:polls.map(function(p){
return {id: p.id, title: p.title};
})};
res.json(result);
});
app.get('/polls/:id', (req, res) => {
let id = req.params.id-1;
res.json(polls[id]);
});
const port = process.env.PORT ? process.env.PORT : 8081;
const server = app.listen(port, () => {
console.log("Server listening port %s", port);
});
那么为什么app.use(express.static(...))
不起作用? 我试过这样的事情:
控件.JS
var app = angular.module('app',[]);
app.controller('AppCtrl',['$scope','$http',function($scope,$http) {
console.log("hello");
var polls = function() {
$http.get('/polls').then(function(response) {
$scope.result = response;
});
};
}]);
索引.html
<!DOCTYPE>
<html>
<head>
<title>myapp</title>
<meta
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script type="text/javascript" src="../server.js"></script>
<script type="text/javascript" src="controller.js"></script>
<script>
</script>
</head>
<body>
<div ng-app="app" ng-controller="AppCtrl">
</div>
</body>
</html>
但我什至无法得到console.log("hello")
。 有什么帮助吗? 如果有人能告诉我如何在不编写app.use(express.static...)
在server.js
做到这一点,我将不胜感激。 或者甚至可以在不添加express.static
(或其他任何内容到server.js
)的情况下获取结果映射?
我怎样才能通过将 node server.js
写入我的 git bash 来server.js
工作?
所以,这是获得你想要的东西的方式。
index.html
public
目录controller.js
文件也放在 public 目录中<script type="text/javascript" src="../server.js"></script>
你不希望你的服务器端文件到客户端。localhost:port
您应该在浏览器中自动获取index.html
文件,并且您必须以与调用/polls
相同的方式从 angularjs 控制器手动调用服务器端的这些 API您需要在 express 上提供静态文件。 为此,打开端口并指定静态文件的目录。
此代码侦听端口(3000)以提供公共目录下的文件。 index.html 应该在公共目录中。 并且您需要使用标签指定包含 angularjs 的 javascript 文件。
let express = require('express');
let app = express();
// Define the port to run on
app.set('port', 3000);
// Listen for requests
let server = app.listen(app.get('port'), onHttpConnection);
function onHttpConnection(req, res){
console.log("starting on " + server.address().port);
}
app.use(express.static('public'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.