Làm cách nào để thoát khỏi Jade khi sử dụng Express với Node.JS? Tôi chỉ muốn sử dụng html đơn giản. Trong các bài viết khác, tôi đã thấy rằng mọi người đã đề xuất app.register () hiện không được dùng nữa trong phiên bản mới nhất.
Làm cách nào để thoát khỏi Jade khi sử dụng Express với Node.JS? Tôi chỉ muốn sử dụng html đơn giản. Trong các bài viết khác, tôi đã thấy rằng mọi người đã đề xuất app.register () hiện không được dùng nữa trong phiên bản mới nhất.
Câu trả lời:
Bạn có thể làm theo cách này:
Cài đặt ejs:
npm install ejs
Đặt công cụ mẫu của bạn trong app.js dưới dạng ejs
// app.js
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
Bây giờ trong tệp tuyến đường của bạn, bạn có thể chỉ định các biến mẫu
// ./routes/index.js
exports.index = function(req, res){
res.render('index', { title: 'ejs' });};
Sau đó, bạn có thể tạo chế độ xem html của mình trong thư mục / views.
title
trong tệp html?
Jade cũng chấp nhận đầu vào html.
Chỉ cần thêm một dấu chấm vào cuối dòng để bắt đầu gửi html thuần túy.
Nếu điều đó phù hợp với bạn thì hãy thử:
doctype html
html. // THAT DOT
<body>
<div>Hello, yes this is dog</div>
</body>
Tái bút - Không cần đóng HTML - điều đó được Jade thực hiện tự động.
response.sendFile
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});)
Từ tham chiếu api express chính thức :
res.sendfile(path, [options], [fn]])
Chuyển tệp theo đường dẫn đã cho.
Tự động đặt mặc định trường tiêu đề phản hồi Loại-Nội dung dựa trên phần mở rộng của tên tệp. Lệnh gọi lại
fn(err)
được gọi khi quá trình chuyển hoàn tất hoặc khi xảy ra lỗi.
res.sendFile
cung cấp bộ đệm phía máy khách thông qua tiêu đề bộ đệm http nhưng nó không lưu nội dung tệp vào bộ đệm phía máy chủ. Đoạn mã trên sẽ đánh vào đĩa theo từng yêu cầu .
sendfile
không cho phép bạn thực hiện bất kỳ quá trình tạo khuôn mẫu nào vì nó chỉ gửi các byte từ một tệp. Hơn nữa, tôi khuyên bạn không nên sử dụng sendfile
như thế này vì nó có nghĩa là bạn sẽ đánh đĩa mỗi khi có yêu cầu - một nút cổ chai rất lớn. Đối với các trang có lưu lượng truy cập cao, bạn thực sự nên lưu vào bộ nhớ đệm trong bộ nhớ.
Theo ý kiến của tôi, việc sử dụng một cái gì đó lớn như ejs chỉ để đọc các tệp html là hơi nặng tay. Tôi vừa viết công cụ mẫu của riêng mình cho các tệp html rất đơn giản. Tệp trông như thế này:
var fs = require('fs');
module.exports = function(path, options, fn){
var cacheLocation = path + ':html';
if(typeof module.exports.cache[cacheLocation] === "string"){
return fn(null, module.exports.cache[cacheLocation]);
}
fs.readFile(path, 'utf8', function(err, data){
if(err) { return fn(err); }
return fn(null, module.exports.cache[cacheLocation] = data);
});
}
module.exports.cache = {};
Tôi đã gọi là htmlEngine của tôi và cách bạn sử dụng nó chỉ đơn giản là nói:
app.engine('html', require('./htmlEngine'));
app.set('view engine', 'html');
app.register()
vẫn chưa bị giảm giá, nó vừa được đổi tên thành app.engine()
kể từ khi Express 3 thay đổi cách xử lý các công cụ mẫu .
Yêu cầu khả năng tương thích với công cụ mẫu Express 2.x khi xuất mô-đun sau:
exports.compile = function(templateString, options) { return a Function; };
Các công cụ mẫu 3.x Express sẽ xuất các nội dung sau:
exports.__express = function(filename, options, callback) { callback(err, string); };
Nếu một công cụ mẫu không hiển thị phương pháp này, bạn không gặp may,
app.engine()
phương pháp này cho phép bạn ánh xạ bất kỳ chức năng nào đến một tiện ích mở rộng. Giả sử bạn có một thư viện đánh dấu và muốn hiển thị các tệp .md, nhưng thư viện này không hỗ trợ Express,app.engine()
lệnh gọi của bạn có thể trông giống như sau:var markdown = require('some-markdown-library'); var fs = require('fs'); app.engine('md', function(path, options, fn){ fs.readFile(path, 'utf8', function(err, str){ if (err) return fn(err); str = markdown.parse(str).toString(); fn(null, str); }); });
Nếu bạn đang tìm kiếm một công cụ tạo khuôn mẫu cho phép bạn sử dụng HTML 'thuần túy', tôi khuyên bạn nên làm doT vì nó cực kỳ nhanh .
Tất nhiên, hãy nhớ rằng mô hình chế độ xem Express 3 để lại bộ nhớ đệm chế độ xem tùy thuộc vào bạn (hoặc công cụ tạo khuôn mẫu của bạn). Trong môi trường sản xuất, bạn có thể muốn lưu các chế độ xem của mình vào bộ nhớ để bạn không thực hiện I / O đĩa theo mọi yêu cầu.
Bạn có thể sử dụng EJS với express mẫu nào là HTML nhưng hỗ trợ các biến. Đây là một hướng dẫn tốt về cách sử dụng EJS trong express.
http://robdodson.me/blog/2012/05/31/how-to-use-ejs-in-express/
Để làm cho công cụ kết xuất chấp nhận html thay vì ngọc, bạn có thể làm theo các bước sau;
Cài đặt củng cố và uống một lân vào thư mục của bạn.
npm install consolidate
npm install swig
thêm các dòng sau vào tệp app.js của bạn
var cons = require('consolidate');
// view engine setup
app.engine('html', cons.swig)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', ‘html');
thêm các mẫu chế độ xem của bạn dưới dạng .html bên trong thư mục “chế độ xem”. Khởi động lại máy chủ nút của bạn và khởi động ứng dụng trong trình duyệt.
Mặc dù điều này sẽ hiển thị html mà không có bất kỳ vấn đề nào, tôi khuyên bạn nên sử dụng JADE bằng cách học nó. Jade là một công cụ tạo mẫu tuyệt vời và học được điều này sẽ giúp bạn đạt được thiết kế và khả năng mở rộng tốt hơn.
trước tiên hãy kiểm tra phiên bản tương thích của công cụ mẫu bằng cách sử dụng dòng dưới đây
express -h
thì bạn phải sử dụng không có chế độ xem nào từ danh sách. chọn không có chế độ xem
express --no-view myapp
bây giờ bạn có thể sử dụng tất cả html, css, js và hình ảnh của bạn trong thư mục chung.
Có vẻ như bạn muốn cung cấp các tệp tĩnh. Và có một trang cho http://expressjs.com/en/starter/static-files.html
Kỳ lạ là không ai liên kết đến tài liệu.
Xem xét bạn đã xác định các tuyến đường của mình hoặc biết cách thực hiện.
app.get('*', function(req, res){
res.sendfile('path/to/your/html/file.html');
});
LƯU Ý: tuyến này phải được đặt sau tất cả các tuyến khác vì * chấp nhận mọi thứ.
vì Jade hỗ trợ HTML, nếu bạn chỉ muốn có đuôi .html, bạn có thể làm điều này
// app.js
app.engine('html', require('jade').renderFile);
app.set('view engine', 'html');
thì bạn chỉ cần thay đổi tệp trong các chế độ xem từ jade sang html.
Bạn cũng có thể đưa trực tiếp tệp html của mình vào tệp ngọc
include ../../public/index.html
Câu trả lời gốc: Máy phát điện nhanh không có ngọc
Nếu bạn muốn sử dụng html thuần túy trong nodeJS mà không cần sử dụng jade .. hoặc bất cứ thứ gì:
var html = '<div>'
+ 'hello'
+ '</div>';
Personnaly tôi đang làm tốt với điều đó.
Ưu điểm là đơn giản khi điều khiển. Bạn có thể sử dụng một số thủ thuật, như '<p>' + (name || '') + '</p>'
, ternary .. vv
Nếu bạn muốn có mã thụt lề trong trình duyệt, bạn có thể thực hiện:
+ 'ok \
my friend \
sldkfjlsdkjf';
và sử dụng \ t hoặc \ n tùy ý. Nhưng tôi thích mà không có, cộng với nó là nhanh hơn.