我试图在Node.js中了解同步与异步,特别是读取html文件.
在请求处理程序中,我正在使用的同步版本,其工作原理如下:
var fs = require("fs");
var filename = "./index.html";
var buf = fs.readFileSync(filename, "utf8");
function start(resp) {
resp.writeHead(200, {"Content-type":"text/html"});
resp.write(buf);
resp.end();
}
exports.start=start;
Run Code Online (Sandbox Code Playgroud)
编辑:我试图像这样重构代码:
var fs = require("fs");
var filename = "./index.html";
function start (resp) {
resp.writeHead(200, {"Content-Type":"text/html"});
fs.readFile(filename, "utf8", function (err, data) {
if (err) throw err;
resp.write(data);
});
resp.end();
}
Run Code Online (Sandbox Code Playgroud)
我得到一个空白页面,我想这是因为它应该等待所有数据都被读取,在resp.write(数据)之前,我该如何发出信号?
我正在尝试使用sublime-text 2,已通过程序包控制安装了Windows的Nodejs,Nodejs插件,但出现以下错误:
错误:找不到进程“ node.exe”。
文件名,目录名称或卷标签语法不正确。
[在0.1秒内完成,退出代码为1]
我已经将NODE_PATH设置为我的用户环境变量:C:\ Program Files \ nodejs \ node.exe我的系统变量PATH中包含:C:\ Program Files \ nodejs \
我的Nodejs.sublime-settings设置如下:
{
// save before running commands
"save_first": true,
// if present, use this command instead of plain "node"
// e.g. "/usr/bin/node" or "C:\bin\node.exe"
"node_command": "C:/Program Files/nodejs/node.exe",
// Same for NPM command
"npm_command": false,
// as 'NODE_PATH' environment variable for node runtime
"node_path": "C:/Program Files/nodejs/node.exe",
"expert_mode": false,
"ouput_to_new_tab": false
}
Run Code Online (Sandbox Code Playgroud)
我的Nodejs.sublime-build的设置如下:
{
"cmd": ["C:/Program Files/nodejs/node.exe", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", …Run Code Online (Sandbox Code Playgroud) 我正在尝试包含一个标题,使用Angular中的ng-include到我的Jade模板中:
doctype html
html(lang="en")
head
meta(charset='UTF-8')
meta(name='fragment', content='!')
base(href='/')
title Node Express Angular
link(rel='stylesheet', href='//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css')
link(rel='stylesheet', href='/css/syle.css')
body(ng-app='myApp')
ng-include(src='\'/partials/header.jade\'')
div.container
div.jumbotron.text-center
h1 Home Page
p This page is a draft in progress
script(src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.15/angular.min.js')
script(src='//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js')
script(src='/js/app.js')
Run Code Online (Sandbox Code Playgroud)
header.jade中的文本如下:
nav.navbar.navbar-inverse(role='navigation')
ul.nav.navbar-nav.navbar-header
li
a(src='/home', class='navbar-brand') Home
li
a(src='/about') About
li
a(src='/login') Login
li
a(src='/register') Register
Run Code Online (Sandbox Code Playgroud)
我曾经尝试都ng-include(src='\'/partials/header.jade\'')和div(ng-include='\'/partials/header.jade\'')
在Chrome开发者控制台中,第一个导致结果,<!--ng-Include: undefined -->第二个导致:<!-- ng-Include: '/partials/header.jade' -->
有线索吗?
我试图使用Git Bash提供的命令行在Windows 8上使用PostgreSQL,这样我就可以像命令一样运行Unix.使用以下命令访问Postgres时:psql -U postgres我得到:
警告:控制台代码页(850)与Windows代码页(1252)等不同...
在Windows命令工具中,我只需要chcp 1252在访问Postgres之前键入,这样就不会显示警告.unix/git bash中的等效命令是什么?
我尝试做chcp 1252或chcp从Git bash但它输出:
sh.exe":chcp:命令未找到
有任何想法吗?
我想在Postgres中存储之前对图片进行编码,我在Sequelize中定义了我的模型:
var request = require('request');
module.exports = function (sequelize, DataTypes) {
var Show = sequelize.define('Show',{
name: DataTypes.STRING,
genre: DataTypes.ARRAY(DataTypes.STRING),
status: DataTypes.STRING,
poster: DataTypes.TEXT
}, {
associate: function (models) {
Show.hasMany(models.Episode)
.hasMany(models.User)
}
}, {
instanceMethods: {
encodePoster : function (poster, done) {
var url = 'http://thetvdb.com/banners/' + poster;
request({url: url, encoding: null}, function (err, response, body) {
encodedpost = 'data:'+response.headers['content-type']+';base64,' + body.toString('base64');
done(err, encodedpost);
});
}
}
})
Show.beforeCreate(function (model, done) {
model.encodePoster(model.poster, function (err, encoded) {
if (err) return …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据结构:
var example = [
{ name: "item1", year: 2013, value: 100 },
{ name: "item1", year: 2012, value: 97 },
{ name: "item3", year: 2013, value: 93 },
{ name: "item3", year: 2012, value: 91 },
{ name: "item2", year: 2012, value: -6 },
{ name: "item2", year: 2011, value: -5 },
{ name: "item4", year: 2012, value: -36 },
{ name: "item3", year: 2011, value: 93 },
{ name: "item4", year: 2013, value: -35 },
{ name: "item1", …Run Code Online (Sandbox Code Playgroud) 我正在使用Express(即Jade)和Angular构建一个小型rss阅读器.我有一个下拉菜单,其中菜单项由模型中的项目列表填充.无论用户选择什么项目,都会附加一个RSS网址,它应该触发工厂.这是玉的部分:
div.btn-group
button.btn.btn-info(type='button') {{loadButtonText}}
button.btn.btn-info.dropdown-toggle(data-toggle='dropdown')
span.caret
span.sr-only Toggle Dropdown
ul.dropdown-menu(role='menu')
li(ng-repeat='rss in RSSList')
a(href='#', ng-click="feedSrc='{{rss.url}}';loadFeed($event);") {{rss.Title}}
input.form-control(type='text', autocomplete='off', placeholder="This is where your feed's url will appear" data-ng-model='feedSrc')
Run Code Online (Sandbox Code Playgroud)
这是我的角度控制器:
var News = angular.module('myApp', []);
News.controller('FeedCtrl', ['$scope','FeedService', function($scope, Feed){
$scope.loadButtonText = 'Choose News Feed';
$scope.RSSList = [
{Title: "CNN", url: 'http://rss.cnn.com/rss/cnn_topstories.rss'},
{Title: "Reuters", url: 'http://feeds.reuters.com/news/usmarkets'}
];
$scope.loadFeed = function (e) {
Feed.parseFeed($scope.feedSrc).then(function (res) {
$scope.loadButtonText=angular.element(e.target).text();
$scope.feeds = res.data.responseData.feed.entries;
}); }}]);
News.factory('FeedService', ['$http', function($http){
return {parseFeed: function (url){
return $http.jsonp('//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=50&callback=JSON_CALLBACK&q='+encodeURIComponent(url));}}
}]);
Run Code Online (Sandbox Code Playgroud)
似乎ng-click中的feedSrc不捕获rss.url,不能作为参数传递给parseFeed函数.我试图直接将rss.url传递给loadFeed,就像这样ng-click="loadFeed({{rss.url}});" …
我正在尝试查看2个html表的元素:
<table class="content">
<tbody>
<tr>
<th>head1</th>
<td>value1</td>
</tr>
<tr>
<th>head2</th>
<td>value2</td>
</tr>
</tbody>
</table>
<table class="content">
<tbody>
<tr>
<th>alpha1</th>
<td>value4</td>
</tr>
<tr>
<th>alpha2</th>
<td>value5</td>
</tr>
<tr>
<th>alpha3</th>
<td>value6</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
使用jquery选择器或cheerio,我正在尝试收集这些元素并将它们放在一个JSON对象中,其中文本元素将作为键和值作为值,因此它会像这样
{head1: 'value1',head2: 'value2', alpha1: 'value4', alpha2: 'value5', alpha3: 'value6'}
Run Code Online (Sandbox Code Playgroud)
我正在努力
$('.content).map(function(i, el) {el=$(el).find('>th').text(); return el;}).get().join(',');
Run Code Online (Sandbox Code Playgroud)
但它似乎给了我2个对象,因为2个同名的表.谢谢,谢谢
node.js ×3
angularjs ×2
postgresql ×2
arrays ×1
build ×1
callback ×1
cheerio ×1
express ×1
fs ×1
git-bash ×1
hook ×1
html ×1
indexof ×1
javascript ×1
jquery ×1
pug ×1
readfile ×1
reduce ×1
sequelize.js ×1
sublimetext2 ×1
web-scraping ×1
windows ×1