Ứng dụng NodeJS của tôi rất đơn giản, nhưng tôi gặp khó khăn trong việc liên kết tệp JavaScript của mình với nó. Thông thường, bạn sẽ chỉ đặt kịch bản vào tiêu đề. Điều đó không hoạt động với Node, rõ ràng, đã cố gắng liên kết nó thông qua SendFile và một số phương pháp khác, nhưng không có phương pháp nào hoạt động.
JavaScript của tôi chỉ đơn giản là:
var express = require['express'];
var app = express[];
app.get['/',function[req, res] {
res.sendFile[__dirname + '/index.html'];
res.send[]
}];
app.listen[8888]
HTML của tôi cũng đơn giản:
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
Những gì tôi muốn làm là liên kết một tệp khác,
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
1. Tôi không biết làm thế nào để làm điều đó mà không có điển hình ' Mô-đun URL tích hợp
Mô -đun URL chia một địa chỉ web thành các phần có thể đọc được.
Để bao gồm mô -đun URL, hãy sử dụng phương thức
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
2:var url = yêu cầu ['url'];
Phân tích một địa chỉ với phương thức
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
3 và nó sẽ trả về một đối tượng URL với từng phần của địa chỉ dưới dạng thuộc tính:Thí dụ
Chia một địa chỉ web thành các phần có thể đọc được:
var url = yêu cầu ['url']; var adr = ' // localhost: 8080/default.htm? Năm = 2017 & tháng = tháng 2'; var q = url.parse [adr, true];
var adr =
'//localhost:8080/default.htm?year=2017&month=february';
var q = url.parse[adr, true];
Console.log [q.host]; // trả về 'localhost: 8080' console.log [q.pathname]; // trả về '/default.htm'console.log[q.Search]; // Trả về '? Năm = 2017 & tháng = tháng 2'
console.log[q.pathname]; //returns '/default.htm'
console.log[q.search]; //returns '?year=2017&month=february'
var qdata = q.Query; // trả về một đối tượng: {năm: 2017, tháng: 'tháng 2'} console.log [qdata.month]; // trả lại 'tháng hai'
console.log[qdata.month]; //returns 'february'
Chạy ví dụ »
Máy chủ tệp Node.js
Bây giờ chúng ta biết cách phân tích cú pháp chuỗi truy vấn và trong chương trước, chúng ta đã học cách làm cho Node.js hoạt động như một máy chủ tệp. Hãy để chúng tôi kết hợp cả hai và phục vụ tệp được khách hàng yêu cầu.
Tạo hai tệp HTML và lưu chúng trong cùng một thư mục với các tệp Node.js của bạn.
summer.html
Summeri yêu mặt trời!
Summer
I love the sun!
winter.html
Winteri yêu tuyết!
Winter
I love the snow!
Tạo tệp Node.js mở tệp được yêu cầu và trả về nội dung cho máy khách. Nếu có bất cứ điều gì sai, hãy ném lỗi 404:
demo_fileserver.js:
var http = yêu cầu ['http']; var url = yêu cầu ['url']; var fs = yêu cầu ['fs'];
var url =
require['url'];
var fs = require['fs'];
http.createserver [function [req, res] {& nbsp; var q = url.parse [req.url, true]; & nbsp; var filename = "." err, dữ liệu] {& nbsp; & nbsp; & nbsp; if [err] {& nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; return res.end ["404 không tìm thấy"]; html '}]; & nbsp; & nbsp; & nbsp; res.write [dữ liệu];
var q = url.parse[req.url, true];
var filename = "." + q.pathname;
fs.readFile[filename, function[err, data] {
if [err] {
res.writeHead[404, {'Content-Type': 'text/html'}];
return res.end["404 Not Found"];
}
res.writeHead[200,
{'Content-Type': 'text/html'}];
res.write[data];
return res.end[];
}];
}].listen[8080];
Hãy nhớ bắt đầu tệp:
Bắt đầu demo_fileserver.js:
C: \ Users \ Your Name> Node demo_fileserver.js
Nếu bạn đã làm theo cùng các bước trên máy tính của mình, bạn sẽ thấy hai kết quả khác nhau khi mở hai địa chỉ sau:
//localhost:8080/summer.html
Sẽ tạo ra kết quả này:
//localhost:8080/winter.html
Sẽ tạo ra kết quả này:
Giới thiệu
Trong Node.js và Ứng dụng Express,
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4 có thể được sử dụng để cung cấp các tệp. Việc cung cấp các tệp HTML bằng cách sử dụng Express có thể hữu ích khi bạn cần một giải pháp để phục vụ các trang tĩnh.Lưu ý: Trước khi Express 4.8.0,
5 đã được hỗ trợ. Phiên bản viết thường này của
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4 đã bị phản đối. Prior to Express 4.8.0,
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
5 was supported. This lowercase
version of
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4 has since been deprecated.Trong bài viết này, bạn sẽ học cách sử dụng
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4.Điều kiện tiên quyết
Để hoàn thành hướng dẫn này, bạn sẽ cần:
- Node.js được cài đặt cục bộ, bạn có thể làm bằng cách theo cách cài đặt Node.js và tạo môi trường phát triển cục bộ.
Hướng dẫn này đã được xác minh bằng nút v16.0.0,
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
8 v7.11.1 và
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
9 v4.17.1.Bước 1 - Thiết lập dự án
Đầu tiên, hãy mở cửa sổ thiết bị đầu cuối của bạn và tạo một thư mục dự án mới:
- mkdir express-sendfile-example
Sau đó, điều hướng đến thư mục mới được tạo:
- cd express-sendfile-example
Tại thời điểm này, bạn có thể khởi tạo một dự án NPM mới:
- npm init -y
Tiếp theo, bạn sẽ cần cài đặt gói
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
9:- npm install
Tại thời điểm này, bạn có một dự án mới sẵn sàng sử dụng Express.
Tạo tệp
- mkdir express-sendfile-example
1 mới và mở nó với Trình chỉnh sửa mã của bạn:server.js
const express = require['express'];
const app = express[];
const port = process.env.PORT || 8080;
// sendFile will go here
app.listen[port];
console.log['Server started at //localhost:' + port];
Xem lại cửa sổ thiết bị đầu cuối của bạn và chạy ứng dụng của bạn:
- node server.js
Sau khi xác minh dự án của bạn đang hoạt động như mong đợi, bạn có thể sử dụng
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4.Bước 2 - Sử dụng
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
Xem lại
- mkdir express-sendfile-example
1 với Trình chỉnh sửa mã của bạn và thêm - mkdir express-sendfile-example
5, - mkdir express-sendfile-example
6 và
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4:server.js
const express = require['express'];
const path = require['path'];
const app = express[];
const port = process.env.PORT || 8080;
// sendFile will go here
app.get['/', function[req, res] {
res.sendFile[path.join[__dirname, '/index.html']];
}];
app.listen[port];
console.log['Server started at //localhost:' + port];
Khi một yêu cầu được thực hiện cho máy chủ, một tệp
- mkdir express-sendfile-example
8 được phục vụ.Tạo tệp
- mkdir express-sendfile-example
8 mới và mở nó với Trình chỉnh sửa mã của bạn:index.html
DOCTYPE html>
Sample Site
body { padding-top: 50px; }
res.sendFile[] Works!
Mã này sẽ hiển thị thông báo:
- cd express-sendfile-example
0.Lưu ý: Hướng dẫn này sử dụng bootstrapcdn để tạo kiểu, nhưng nó không bắt buộc. This tutorial makes use of BootstrapCDN for styling, but it is not required.
Lưu các thay đổi của bạn. Sau đó, mở cửa sổ đầu cuối của bạn và chạy lại máy chủ.
- node server.js
Với máy chủ đang chạy, hãy truy cập
- cd express-sendfile-example
1 trong trình duyệt web:Ứng dụng của bạn hiện sử dụng
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4 để phục vụ các tệp HTML.Sự kết luận
Trong bài viết này, bạn đã học cách sử dụng
Charter
Add series
$[function [] { $['#container'].highcharts[{ chart: { events: { addSeries: function [] { var label = this.renderer.label['A series was added, about to redraw chart', 100, 120].attr[{ fill: Highcharts.getOptions[].colors[0], padding: 10, r: 5, zIndex: 8 }] .css[{ color: '#FFFFFF' }] .add[]; setTimeout[function [] { label.fadeOut[]; }, 1000]; } } }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }]; }];
4.Tiếp tục học tập của bạn với học cách sử dụng bộ định tuyến Express 4.0 và cách truy xuất URL và đăng các tham số với Express.