javascript - nodejs的两点疑问
天蓬老师
天蓬老师 2017-04-11 11:43:09
[JavaScript讨论组]

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

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

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
PHP中文网

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

高洛峰

谢邀,

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

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

迷茫

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

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

PHPz

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

目录结构:

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

app.js代码(以express为例)

//第一行是创建一个服务器,第二行是指定该服务器的静态文件目录
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
ringa_lee
  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}))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号