-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Как использовать на клиенте без подключения Coffee-Script? #23
Comments
Тут немного не верно указаны параметры. Есть рабочий пример тут https://github.com/baryshev/ect/blob/master/examples/compiler.js В Вашем случае нужно примерно так: app.use('/view', ECT.compiler({ root: __dirname + '/view' }))
app.all('/*',function(request,response){
new rootController(request,response);
}); Параметр root это путь к папке где хранятся шаблоны на диске. А первый параметр в Например если root будет Для надёжности параметр |
К сожалению этот пример не работает. require('./Initialization.js');
app=express();
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use('/view', ECT.compiler({ root: __dirname + '/view' }))
app.all('/*',function(request,response){
new rootController(request,response);
});
app.listen(8880,"127.0.0.1"); Все равно запрос |
Извиняюсь. Я сам немного ошибся. Есть 2 сущности:
var ECT = require('ect'); // Подключаем ECT
var renderer = ECT({ root : __dirname + '/view', ext : '.html', watch: true }); // Создаем объект ect (тут root - это путь к папке с шаблонами на диске)
app.use(renderer.compiler({ root : '/view', gzip: true })); // Подключаем middleware (тут root это base-url)
// app.use('/view', renderer.compiler({ gzip: true })); // Это тоже самое, что и предыдущая строка, только base-url задается средствами express а не middleware. |
Поменял код. К сожалению, ситуация все та же. require('./Initialization.js');
app=express();
app.use(express.cookieParser());
app.use(express.bodyParser());
global.ECT= ect({ root: __dirname + '/view', watch: true });
app.use(ECT.compiler({ root : '/view', gzip: true })); // Подключаем middleware (тут root это base-url)
app.all('/*',function(request,response){
new rootController(request,response);
});
app.listen(8880,"127.0.0.1"); Видимо не судьба мне рендерить шаблоны на сервере... неужели Coffee-Script надо будет подключать? |
Вот только что проверил у себя такой же код: var express = require('express');
var app = express();
var ect = require('ect');
app = express();
app.use(express.cookieParser());
app.use(express.bodyParser());
global.ECT = ect({ root: __dirname + '/view', watch: true });
app.use(ECT.compiler({ root : '/view', gzip: true })); // Подключаем middleware (тут root это base-url)
app.all('/*',function(request,response){
response.end('Hello, World!');
});
app.listen(3000); Структура файлов:
URL: Отдает скомпилированный шаблон. |
Да, ваш пример работает. Дело было в Nginx. location ^~ /view {
proxy_pass http://127.0.0.1:8880/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
location / {
proxy_pass http://127.0.0.1:8880/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
} А надо вот так location ^~ /view {
proxy_pass http://127.0.0.1:8880/view;# Вот здесь надо проксировать именно на view
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
location / {
proxy_pass http://127.0.0.1:8880/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
} Спасибо большое за помощь |
Версия ECT на клиенте последняя? У меня всё работает нормально. |
Похоже у Вас старая версия ECT на сервере. Скомпилированная функция не окружена скобками. Это было недавно исправлено. |
Да, проблема была именно в этом. А не подскажете, данные с сервера загружаются синхронно? |
Да, загрузка шаблона происходит синхронно. |
AJAX.open("GET",file,false) Увидел уже. А почему сделано так? Если ответа от сервера не будет долго, страница перестанет реагировать на действия пользователя до момента получения данных. Это как-то не религиозно. |
Можно попросить вас изменить? AJAX.open("GET",file,true)
if(typeof callback=="function"){
AJAX.onreadystatechange = function() {
if (AJAX.readyState == 4 && AJAX.status == 200) {
callback(AJAX.responseText);
}
}
} |
Там вся система будет сильно усложнена, если применить асинхронную загрузку. Это касается инклудов и наследований внутри шалона. Сейчас можно внутри шаблона написать |
Спасибо вам большое, Вадим. Вы мне очень помогли сегодня. |
Я уже понял что то про MIddleWare, но не совсем понятно как его реализовать с express.
В данный момент у меня вот такая конструкция
Но запрос /vew/template.html все равно берет на себя последняя конструкция.
Пожалуйста, помогите правильно сделать?
The text was updated successfully, but these errors were encountered: