如何使用节点js运行html文件

Sat*_*dev 16 javascript node.js angularjs

我有一个简单的html页面,角度js如下:

    //Application name
    var app = angular.module("myTmoApppdl", []);

    app.controller("myCtrl", function ($scope) {
        //Sample login function
        $scope.signin = function () {
            var formData =
                    {
                        email: $scope.email,
                        password: $scope.password
                    };
        console.log("Form data is:" + JSON.stringify(formData));
    };
});
Run Code Online (Sandbox Code Playgroud)

HTML文件:

<html>
    <head>
        <link href="bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>

    <body ng-app="myTmoApppdl" ng-controller="myCtrl">
        <div class="container">
            <div class="form-group">
                <form class="form" role="form" method="post" ng-submit="signin()">
                    <div class="form-group col-md-6">
                        <label class="">Email address</label>
                        <input type="email" class="form-control" ng-model="email" id="exampleInputEmail2" placeholder="Email address" required>
                    </div>
                    <div class="form-group col-md-6">
                        <label class="">Password</label>
                        <input type="password" class="form-control" id="exampleInputPassword2" ng-model="password" placeholder="Password" required>
                    </div>
                </form>
                <button type="submit" class="btn btn-primary btn-block">Sign in</button>
            </div>
        </div>
    </body>

    <script src="angular.min.js" type="text/javascript"></script>

    <!--User defined JS files-->
    <script src="app.js" type="text/javascript"></script>
    <script src="jsonParsingService.js" type="text/javascript"></script>
</html>
Run Code Online (Sandbox Code Playgroud)

我是节点js的新手.我在我的系统中安装了节点js服务器,但我不知道如何使用节点js运行一个简单的html文件?

JIL*_*nDR 21

您可以使用内置的nodejs Web服务器.

server.js例如添加文件并输入以下代码:

var http = require('http');
var fs = require('fs');

const PORT=8080; 

fs.readFile('./index.html', function (err, html) {

    if (err) throw err;    

    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(PORT);
});
Run Code Online (Sandbox Code Playgroud)

并在使用命令从控制台启动服务器之后node server.js.您的index.html页面将在URL上提供http://localhost:8080


小智 12

只需在全局安装http-server

npm install -g http-server

在哪里你需要运行一个html文件运行命令http-server对于ex:你的html文件在/home/project/index.html你可以做 /home/project/$ http-server

这将为您提供访问您的网页的链接: http-server Starting up http-server, serving ./ Available on: http://127.0.0.1:8080 http://192.168.0.106:8080


小智 8

我也遇到过这种情况,我必须在nodejs中运行一个web应用程序,其中index.html是入口点.这是我做的:

  • node init在app的根目录中运行(这将创建一个package.json文件)
  • 在app的root中安装express :( npm install --save expresssave将使用express依赖更新package.json)
  • 在您的应用程序的根目录中创建一个公用文件夹,并将您的入口点文件(index.html)及其所有相关文件(这只是为了简化,在大型应用程序中,这可能不是一个好方法).
  • 在app的根目录下创建一个server.js文件,在这里我们将使用节点的express模块​​,它将从当前目录提供公共文件夹.
  • server.js

    var express = require('express');
    var app = express();
    app.use(express.static(__dirname + '/public')); //__dir and not _dir
    var port = 8000; // you can use any port
    app.listen(port);
    console.log('server on' + port);
    
    Run Code Online (Sandbox Code Playgroud)
  • 执行node server:它应该输出"8000上的服务器"

  • 启动http:// localhost:8000 /:将调用index.html

文件结构将类似


小智 8

将您的 HTML 文件移动到文件夹“www”中。使用代码创建一个文件“server.js”:

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/www'));

app.listen('3000');
console.log('working on 3000');
Run Code Online (Sandbox Code Playgroud)

创建文件后,运行命令“node server.js”


cod*_*leb 5

迄今为止最简单的命令:

npx http-server

这需要在执行此命令的目录中有一个现有的 index.html。

Vijaya Simha 已经提到了这一点,但我认为使用 npx 更简洁、更短。几个月以来,我一直在使用这种方法运行网络服务器。

文档:https : //www.npmjs.com/package/http-server


Ric*_*edo 5

http 访问并获取 8080 上提供的 html 文件:

>npm install -g http-server

>http-server
Run Code Online (Sandbox Code Playgroud)

如果您有公共(./public/index.html)文件夹,它将是您服务器的根目录,如果没有,它将是您运行服务器的根目录。您可以将文件夹作为参数发送,例如:

http-server [path] [options]
Run Code Online (Sandbox Code Playgroud)

预期结果:

*> 启动 http 服务器,提供 ./public 可用于:

http://LOCALIP:8080

http://127.0.0.1:8080

按 CTRL-C 停止服务器

http 服务器已停止。*

现在,您可以运行:http://localhost:8080

将打开 ./public 文件夹中的index.html

参考资料: https: //www.npmjs.com/package/http-server


Mat*_*ias 1

要么使用框架,要么用nodejs编写自己的服务器。

一个简单的文件服务器可能如下所示:

import * as http from 'http';
import * as url from 'url';
import * as fs from 'fs';
import * as path from 'path';

var mimeTypes = {
     "html": "text/html",
     "jpeg": "image/jpeg",
     "jpg": "image/jpeg",
     "png": "image/png",
     "js": "text/javascript",
     "css": "text/css"};

http.createServer((request, response)=>{
    var pathname = url.parse(request.url).pathname;
    var filename : string;
    if(pathname === "/"){
        filename = "index.html";
    }
    else
        filename = path.join(process.cwd(), pathname);

    try{
        fs.accessSync(filename, fs.F_OK);
        var fileStream = fs.createReadStream(filename);
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        response.writeHead(200, {'Content-Type':mimeType});
        fileStream.pipe(response);
    }
    catch(e) {
            console.log('File not exists: ' + filename);
            response.writeHead(404, {'Content-Type': 'text/plain'});
            response.write('404 Not Found\n');
            response.end();
            return;
    }
    return;
    }
}).listen(5000);
Run Code Online (Sandbox Code Playgroud)