Node.js簡易服務器,配合type="module" 實現html文件script標簽 ES module引入模塊


    相信大家在測試type="module" 在html文件中直接模塊化引入 js時,會出現一個跨域問題。

 

 當我們將<script ></scirpt> 標簽type設置為"module" 之后,script 標簽就不具備跨域能力了

自然我們需要將項目托管在一個本地服務里面。下面時一個簡單的Node.js 服務

```js

var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
    if(req.url ==='/favicon.ico') {
        return res.end();
    } // 將默認的瀏覽器行為過濾。也並無相關
    var f= '/this上下文module模式/1.html';
    if(req.url.match(/.js$/)) {
        f = '/this上下文module模式'+req.url;
        res.setHeader('content-Type','text/javaScript;charset:utf-8')
    } // 核心解決方法 ------
    res.writeHead(200);
        if(req.url === '/2') {
            return fs.createReadStream(__dirname+'/this上下文module模式/2.html').pipe(res)
        }  // 這個時測試另外一個分頁,與本篇隨筆無關
    fs.createReadStream(__dirname+f).pipe(res);
}).listen(3000);
```js
 
如果沒有核心代碼部分,對js訪問時的操作,那么就會出現下面這個報錯。

 

 因為項目在服務器上,那么瀏覽器在請求lib.js的時候,不在時file協議,而是以http協議的方式。我們需要單獨對js的請求,進行格式的添加。即

content-Type: text/javascript  大家又沒有發現,這個type其實如果在不是module形勢下。時script 默認規定了格式 text/javascript


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM