首先我的文件结构:
web
-public
--login.html(登陆页面属于静态页面)
-veiws
--index.jade
-routes
--index.js
-app.js
前端代码
$("#login").click(function(){
var username=$('#un').val();
var pw=$("#pw").val();
var data = {"un":username,"pw":pw};
$.ajax({
type:"post",
url:"/login",
async:true,
success: function(data,status){
if(status == 'success'){
location.href = '../views/index.jade';
}
},
error: function(data,status){
if(status == 'error'){
alert("密码或者用户名错误");
}
});
})
这个$.ajax里的url我到底应该写什么。
另外我的服务端代码是写在app.js里还是写在router文件夹下的index.js里。还是新建一个js文件并把服务端代码写进去,然后url写这个js文件的相对目录(php貌似就是这样)。
还有就是index.js里的router.get('/', function(req, res, next){} )和
app.js里的var router = require('./routes/index');app.use('/',router)有什么区别,到底哪个才是绑定域名。我的理解是服务器启动后自动运行app.js然后app.use相当于把函数压入一个stack依次执行,然后执行到index.js时,index.js根据url地址渲染views里的jade模板,并且每刷新一次重新渲染一次(不清楚是没刷新一次app.js重新执行一次还是index.js重新执行一次)。
你可以试试在 segmentFault 的 控制台那里输入下面的代码
然后你会拿到 https://segmentfault.com/ 这个 html 的文件内容。
你的问题
假设你监听了 3000 端口,而且你定义了 /login 这个路由
那么 URL 应该填 /login
这个 app.use 后面的内容叫做中间件
比如我访问 http://localhost:3000/api/login
恰好我有个中间件刚刚好可以匹配到 /api/login 那么 express 会把 req res 交给这个中间件做处理