nodejs的两点疑问

1,我直接将html文档返回到浏览器,但是html里面引用了一些本地文档,如外部style,外部js,图片之类的,这些全都访问不到,是否要针对这些单独写路由。

2,如何做到像模板引擎一样,往html文档里面填值。

以上两种都是在不用框架的情况下。
先谢过各位了。

阅读 3.3k
5 个回答
  1. 需要一个路由

  2. 用 es6 的 string template.

example:

const render = (context, ...others) => {
  return `
    <html>
      <body>
        <h1>{context.title}</h1>
        <p>
          {
            `
             {
              if (context.condition) {
               <span>${context.something}</span> 
              } else {
               <span>${context.somethingElse}</span> 
              }
             }
            `
          }
        </p>
      </body>
    </html>
  `
}

res.send(render({title: 1, something: 1, ...rest}))

不用框架的话,需要自己指定一个目录作为静态资源文件夹(根据访问地址到该目录找文件来响应),或者单独起一个站点作为静态资源站,但原理一样的,参考下:http://famanoder.com/bokes/58...

谢邀,

  1. 同意楼上的回答,不用框架你要自己写个静态资源的服务器了。

  2. 自己实现一个简易模版引擎,支持include的功能即可,也就是你nodejs生成html的时候解析你设计的html模版,然后替换占位符,替换完了,生成完整的html了,再发给浏览器

将html文档返回到浏览器,这一行为到底是怎样的?
你是指前端向服务器发出请求,然后由你这个基于nodejs的服务器向前端返回了一个html文档?
如果是这种情况的话,你只需要设置好返回的Header就行了,浏览器会自动解析这些资源。

如何做到像模板引擎一样,往html文档里面填值
你弄一个模版引擎不就结了…………不想用现成的,反正不就是字符串拼接嘛……还能怎么搞……

我猜,应该是没有设置静态文件目录吧。举个栗子:

目录结构:

|-- public    //静态文件目录,存放js,css文件
|-- app.js    //nodejs服务器启动文件

app.js代码(以express为例)

//第一行是创建一个服务器,第二行是指定该服务器的静态文件目录
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题