Angular跟Express结合,怎么设置不使用template engine?
发布于 8 年前 作者 THCloud 4922 次浏览 来自 问答

我想在angular的route.js里templateUrl直接指向html文件,这样我在express的route可以省下几个get 的api 去render 文件过去了

在网上看到这个解决方案

1.jpg

测试过,这个还是会占用get的api去render文件过去,还是不能用angular的route去加载文件

想问下怎么解决?

21 回复

设置了不用不就行了

@hpgt 不行,提示你没有设置default view engine

2.jpg 注释掉view engine的结果会是这样

直接sendFile怎么样? 如果设置了没有视图引擎,也就不能再调用render了

@darknighten app.js怎么写?就是上面设置引擎这段代码?

别沉,顶一下

@THCloud

试试这样行不行?

服务器: app.use(express.static(path.join(__dirname, ‘public’))); 路由: app.get(’/’, function(req,res) { res.sendfile(‘public/name_of_static_file.extension’); });

这个已经试过了不行,还是提示没有设置default engine

@THCloud

直接写这个呢?别的都不要了,就是当成静态文件服务器,还有没有提示?

app.use(express.static(__dirname + ‘/public’));

参考了这里:http://stackoverflow.com/questions/17911228/how-do-i-use-html-as-the-view-engine-in-express

如果要使用路由的话,就得自己写个简易的视图引擎 http://stackoverflow.com/a/23834230

@darknighten 静态文件服务器就没有意义了啊 我希望angular来控制模板的加载,如果你是静态文件服务器,那我在地址栏就可以输入路径,直接访问你具体的html文件了 但是我希望地址栏只漏出path或者state,angular根据这个state或者说path来去找templateUrl来 加载模板

templateUrl 里面的地址就写成静态文件服务器中对应的文件地址,就是让ng去访问静态文件就可以了,客户端看不到

    .state('userLog', {
        url: '/userLog',
        templateUrl: '静态文件.html'
    })

@darknighten 试过,但是你如果express不写get,render的话,这样不好用,还是出错

@darknighten 真的是试过各种方法了才求助的,希望看到一些我还没有试过的方法

@THCloud

┑( ̄Д  ̄)┍,持续关注中,顶起

@darknighten 有个大牛说让我全路由到index 然后就没继续说 没领悟到什么意思啊!

@THCloud 这个试试 <pre><code> var express = require(‘express’); var http = require(‘http’); var app = express();

app.use(express.static(__dirname + ‘/public’));

http.createServer(app).listen(3000); </code></pre>

@THCloud 把html文件放到/publc下,不放在views下

楼上说的应该可行 最好再加上history api fallback

来自酷炫的 CNodeMD

跳到同级下其他页面怎么写? 我这里跳index没有问题,跳到下一个页面就错了

@THCloud 你要前后端分离的话首页也可以不用后端渲染,就像在本地打开一个html页面然后调用接口

不知道楼主是怎么写的,我在app.js里直接注释掉了express的模板引擎设置,然后angular所有的静态文件都在app文件夹内

app.get('/', function (req, res) {
  res.sendfile('app/index.html');
});
app.use(express.static(path.join(__dirname, 'app')));

然后通过这个把请求指向我angular文件夹的首页,这样是没有任何问题的

回到顶部