我正在尝试学习ExpressJS和NodeJS以与Twitter API一起使用。这是我到目前为止的设置:
的package.json
{
"name": "twitter-express",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3",
"hogan-express": "^0.5.2",
"twit": "^2.2.9"
}
}
server.js
var express = require('express');
var server = express();
server.set('port', process.env.PORT || 3003);
server.engine('html', require('hogan-express'));
server.set('view engine', 'html');
server.get('/', function(req, res) {
res.render('index', {title: 'Twitter', data: theTweets});
});
server.listen(server.get('port'), function() {
console.log('Listening on port:' + server.get('port'));
});
var Twit = require('twit');
var theTweets = [];
var T = new Twit({
consumer_key: '',
consumer_secret: '',
access_token: '',
access_token_secret: ''
});
var params = {
q: '#nodejs',
count: 10,
result_type: 'recent',
lang: 'en'
}
T.get('search/tweets', params, getData);
function getData(err, data, response) {
var tweets = data.statuses;
for (var i = 0; i < tweets.length; i++) {
theTweets.push(tweets[i].text);
}
}
我正在使用hogan-express作为模板引擎,因为我遵循了教程。通过此设置,一切正常,推文显示在网页上。但是,正如我试图了解这一点,我对Express和Node有一些疑问:
如果我理解正确,我需要使用Express来服务我的应用程序的客户端(在网页上显示推文),这是Node应用程序的最佳方式还是我可以用其他方式来实现?
我是否必须使用模板引擎,还是只能使用html?在这种情况下,如何在没有模板引擎的情况下使用它?谢谢。
答案 0 :(得分:1)
Node,Express和hogan在这里解决了不同的问题。
NodeJS是一个基于Chrome的V8 JavaScript引擎构建的开源服务器端运行时环境。它有自己的优点和缺点,但为了简单起见,你可以将它视为一个服务器,它有许多内置模块与网卡交互,理解http等。
Express是一个开发Web应用程序的框架。框架正好与图书馆相对。考虑一下框架,比如已完成基本布线的结构,您只需将代码/处理程序放在所需的位置,框架将在需要时调用您的代码/处理程序。框架通过完成所有辅助作业使工作变得简单,以便您可以专注于您正在解决的实际问题。你可以在没有表达的情况下做事,或者说没有任何其他框架,但现在你必须处理很多事情。
例如,现在您需要自己解析http标头,检查URL,检查方法类型,解析查询参数,然后调用适当的处理程序来处理该特定请求。现在,您可以看到这些所有内容都是开销,而不是您希望解决的实际问题。当使用express时,你会得到一个路由器来处理所有这些事情并调用你为特定请求定义的处理程序。因此,快递使您的开发更快捷,更轻松。还有许多其他框架,例如hapi
,sails
等,它们或多或少都有相同的东西。
霍根是一个模板引擎。模板引擎使您在渲染网页时更轻松。例如,您只能在模板引擎中使用条件,循环等,否则您需要使用javascript来处理。例如,只考虑页面上的菜单项数量不固定,那么您将如何处理它?你要么只在服务器端动态创建html,你将使用模板引擎给出的循环,或者你将提供基本的html并使用javascript(jquery,angular等)来更新菜单。
答案 1 :(得分:0)
正如您可以观察到Express(Node js框架)允许您构建后端应用程序或服务。在客户端,您可以使用Angular,Jquery或Pure Javascript获取API或数据。哈巴狗或翡翠应该可以作为一个温标引擎。
答案 2 :(得分:0)
我为Express,Node js和Jquery找到了合适的解决方案(Javascript Nodes and HTML
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "GET",
data: '{}',
contentType: "application/json; charset=utf-8",
url: "urlofyourserver:3000/path/",
dataType: "jsonp",
processdata: true,
success: function(data) {
$('#htmldiv').html(data);
}
});
});
</script>
</head>
<body>
<div class="mylist" id="htmldiv"></div>
</body>
</html>