我在nodeJS/Expressjs服务器中编写了以下代码:
app.post('/settings', function(req, res){
var myData = {
a: req.param('a')
,b: req.param('b')
,c: req.param('c')
,d: req.param('d')
}
var outputFilename = 'config.json';
fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
if(err) {
console.log(err);
} else {
console.log("Config file as been overwriten");
}
});
});
Run Code Online (Sandbox Code Playgroud)
});
这允许我获取提交的表单数据并将其写入JSON文件.
这非常有效.但是客户仍处于某种状态,并最终超时.所以我需要将某种成功状态或成功标题发送回客户端.
我该怎么做?
先感谢您!
我刚开始学习React并有一个问题.
我想做以下事情:
如果用户单击某个段落,我想将该元素更改为具有预填充段落内容的输入字段.(如果用户具有某些特权,最终目标是直接编辑)
我走到这一步,但完全不知所措.
var AppHeader = React.createClass({
editSlogan : function(){
return (
<input type="text" value={this.props.slogan} onChange={this.saveEdit}/>
)
},
saveEdit : function(){
// ajax to server
},
render: function(){
return (
<header>
<div className="container-fluid">
<div className="row">
<div className="col-md-12">
<h1>{this.props.name}</h1>
<p onClick={this.editSlogan}>{this.props.slogan}</p>
</div>
</div>
</div>
</header>
);
}
});
Run Code Online (Sandbox Code Playgroud)
如何从editSlogan函数中覆盖渲染?
我正在使用Expressjs构建一个节点应用程序,我正在尝试在新安装的Ubuntu上运行我的节点应用程序(我刚刚安装了git和node v 0.10.19).
可悲的是,我在尝试在终端中运行应用程序时遇到以下错误:
Events.js:72
throw er; // unhandled 'error' event
Error: spawn EACCES
Run Code Online (Sandbox Code Playgroud)
我在3000端口运行,我正在使用sudo.我也尝试了root,我也玩了1024个阈值以上的不同端口.
该应用程序只是基本的Expressjs,我使用默认方法打开应用程序套接字:
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
我是一个Linux菜鸟所以任何帮助表示赞赏.顺便说一句,该应用程序在Windows上运行得非常好.
基本服务器代码:
var express = require('express')
, app = express()
, fs = require ('fs')
, lingua = require('lingua');
process.env.NODE_ENV = 'development';
app.configure(function(){
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
app.setMaxListeners(100);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/public'));
app.use(express.favicon(__dirname + '/public/core/favicon.ico'));
app.use(lingua(app, {
defaultLocale: 'translation_',
storageKey: 'lang',
path: __dirname+'/public/translations/',
cookieOptions: {
httpOnly: false,
expires: new Date(Date.now(-1)),
secure: false
}
}));
app.use(app.router);
app.locals.pretty = true;
}); …Run Code Online (Sandbox Code Playgroud) 在构建响应式网站时,我有时会使用背景图像为适当的屏幕尺寸渲染合适的图像.
例如:
#image {
background-image: url(largeimage.jpg);
}
@media only screen and (max-width: 320px) {
#image {
background-image: url(smallimage.jpg);
}
}
Run Code Online (Sandbox Code Playgroud)
为了让屏幕阅读器知道我们正在处理什么类型的元素,我添加
role="img"
Run Code Online (Sandbox Code Playgroud)
和
aria-label
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
我一直都知道SEO最好在实际的图像元素中添加像公司徽标这样的图像.
例如
<img src="logo-companyname.png">
Run Code Online (Sandbox Code Playgroud)
原因是当Google图像搜索公司名称时,徽标会显示.(假设网站排名很好)
谷歌在作为div实施时仍会"刮"出徽标吗?例如
<div id="logo-company" role="img" aria-label="company name"></div>
Run Code Online (Sandbox Code Playgroud)
或者我是否仍需要在某处添加图像以获得所需的结果?谷歌是否会对屏幕阅读器标签做任何事情?
我使用光滑旋转木马的反应版本来制作像旋转木马一样的Netflix.您可以单击图块,然后展开该图块以显示该图块的详细信息.
例:
由于Slicks处理动态高度的能力,这非常有效.我想在展开的部分添加一个关闭按钮(如最右边所示).但这就是我遇到问题的地方.
如果我添加一个带有onClick处理程序的关闭按钮,它将始终触发显示扩展部分的父Onclick.
showExpanded onclick函数只是设置了showDetails状态.
所以我的问题是:
如何通过单击关闭按钮来设置状态,而不会触发包装父级.
我尝试了event.preventDefault()和event.stopPropagation()但是没有做到这一点.
Tile click看起来像这样:
expandTile(){
this.setState({
showDetails: true,
closeTile: false
});
}
Run Code Online (Sandbox Code Playgroud)
关闭按钮单击功能,因为我现在有:
closeTile(e){
e.preventDefault();
e.stopPropagation();
const showDetails = this.state.showDetails;
if(showDetails){
this.setState({
showDetails: false,
closeTile: true
});
}
}
Run Code Online (Sandbox Code Playgroud)
更新:添加了JSX:
return (
<div className={s.itemPreWrapper} key={`${el.title}-item-${index}`}>
<div className={`${s.item} ${showDetails ? s.showDetails : ''}`}
onClick={self.state.expandItem}
data-index={index}
<div className={s.itemCaret}></div>
<div className={s.imgWrapper}>
<img src={el.itemImage}/>
</div>
<div className={s.overlay}>
{el.title}
</div>
<div className={s.expandedTile} style={{left: '-'+offset+'px'}}>
<div className={s.etItem}>
<div key={`subitem-${index}`} ref="subItem">
<div className="row">
<div className={`${s.etClose}`} onClick={self.state.closeTile}><span></span></div>
<div className="col-xs-12 col-sm-3">
<div …Run Code Online (Sandbox Code Playgroud) 嘿那里,
我正在尝试为我的NodeJS应用程序添加一些非传统功能,但我遇到了一些麻烦.我想要做的是以下内容:
我想从客户端更新我的服务器代码.(如果您愿意,可以使用自动更新功能.)
我的第一次尝试是使用NPM API并运行:
npm.commands.install([package], function(err, data)
Run Code Online (Sandbox Code Playgroud)
但是当然这会导致错误告诉我在服务器运行时NPM无法安装.
我的第二次尝试是使用以下代码生成NPM更新:
spawnProcess('npm', ['update'], { cwd: projectPath }, done);
Run Code Online (Sandbox Code Playgroud)
spawnProcess函数是一个通用的spawn函数:
var projectPath = path.resolve(process.cwd());
var spawnProcess = function(command, args, options, callback) {
var spawn = require('child_process').spawn;
var process = spawn(command, args, options);
var err = false;
process.stdout.on('data', function(data) {
console.log('stdout', data.toString());
});
process.stderr.on('data', function(data) {
err = true;
console.log('stderr', data.toString());
});
if (typeof callback === 'function') {
process.on('exit', function() {
if (!err) {
return callback();
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
但这给了我一个stderr,然后是'CreateProcessW:找不到文件'错误.我不太清楚我做错了什么.
如果所有其他方法都失败了,我认为可能编写一个shellcript kill …
我做了这个(下面的运行片段)
var Canvas = document.getElementById('c');
var ctx = Canvas.getContext('2d');
var resize = function() {
Canvas.width = Canvas.clientWidth;
Canvas.height = Canvas.clientHeight;
};
window.addEventListener('resize', resize);
resize();
var elements = [];
var presets = {};
presets.shard = function (x, y, s, random, color) {
return {
x: x,
y: y,
draw: function(ctx, t) {
this.x += 0;
this.y += 0;
var posX = this.x + + Math.sin((50 + x + (t / 10)) / 100) * 5;
var posy = this.y + + …Run Code Online (Sandbox Code Playgroud)我有一个导航组件,呈现每个导航链接.此组件的返回如下所示:
return (
<li key={`nav-list-${el.title}-${index}`}>
<Link to={{pathname: '/c/' + el.urlkey}}
activeClassName={s.active}>{el.title}</Link>
{subNav}
</li>
);
Run Code Online (Sandbox Code Playgroud)
活动类仅在页面刷新时设置.单击链接时,活动指示符将保留在初始链接中.
我没有使用Redux,所以它似乎与此问题无关:当点击链接时,activeClassName在sideMenu上不起作用
我的路线看起来像这样:
<Route path="/c/:category(/:title)" component={CategoryView} name="category" />
Run Code Online (Sandbox Code Playgroud)
使用React-Router 2.8.1和browserHistory
我正在NodeJS中构建一个mediacenter应用程序,这很不错.(你可以在Github上查看:https://github.com/jansmolders86/mediacenterjs)
我正在使用FFMPEG将本地(静态)电影转码为流然后发送到浏览器.
起初我使用h264和Flash在浏览器中工作,但我真的需要它在Android上运行iOS(所以没有Flash),最好是在Raspberry Pi上工作.
但是让它在所有设备上播放让我绝对疯狂!
我从无数小时阅读文章,教程和堆栈溢出帖子中收集了所有这些难题,这使我得出结论,我需要生成以下内容:
- 使用视频编解码器H264转码为MP4
- 移动moovatom'-movflags'以使MP4可流化
- 对流进行分段,以便Apple也可以播放流.
但无处可去.每次我制作一系列不起作用的FFMPEG设置,或者在某些设备上工作而不是全部工作.
我失败的一些尝试在哪里:
我的闪存尝试 - > 主要问题(不在IOS中运行):
'-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\
'-ab 128','-ar 44100','-bufsize 62000', '-maxrate 620k'\
metaDuration,tDuration,'-f flv
Run Code Online (Sandbox Code Playgroud)
我的HLS尝试 - > 主要问题(未在浏览器中运行):
'-r 15','-b:v 128k','-c:v libx264','-x264opts level=41'\
'-threads 4','-s 640x480','-map 0:v','-map 0:a:0','-c:a mp3'\
'-b:a 160000','-ac 2','-f hls','-hls_time 10','-hls_list_size 6'\
'-hls_wrap 18','-start_number 1'
Run Code Online (Sandbox Code Playgroud)
我的MP4尝试 - > 主要问题(持续时间缩短,视频后期加速)
'-y','-ss 0','-b 800k','-vcodec libx264','-acodec mp3'\
'-ab 128','-ar 44100','-bufsize 62000', '-maxrate 620k'\
metaDuration,tDuration,'-f mp4','-movflags','frag_keyframe+empty_moov'
Run Code Online (Sandbox Code Playgroud)
第二次MP4尝试: - > 主要问题(持续时间缩短,视频后期加速)
'-y','-vcodec libx264','-pix_fmt yuv420p','-b …Run Code Online (Sandbox Code Playgroud) 我正在构建一个使用模块node-fluent-ffmpeg的应用程序.https://github.com/schaermu/node-fluent-ffmpeg
我正在尝试将ffmpeg二进制文件与我的应用程序一起打包.我想这样做(特别是在Windows上),用户不必手动安装FFMPEG.
可悲的是,我尝试的一切都会导致错误.我尝试过以下方法:
ffmpeg.setFfmpegPath : Gives an error saying setFfmpegPath is not a method
Run Code Online (Sandbox Code Playgroud)
和:
proc.setFfmpegPath : Gives a createproces error.
Run Code Online (Sandbox Code Playgroud)
看来我做错了什么.有人可以指出我的错误.非常感谢.
我有一个(可能是非常愚蠢的)问题.我有一个表单,我用Express提交给我的nodeJS服务器.这与文本输入和单选按钮完美配合,但现在我必须添加一个选择.服务器没有给出错误但是没有正确解析select.
我的代码:
<select id="chooselang">
<option value="nl" name="language">NL</option>
<option value="en" name="language">EN</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我的服务器看起来像这样:
app.post('/settings', function(req, res){
// Fill JSON array with new settings
var myData = {
,name : req.body.name
,mail : req.body.email
,language : req.body.language
,location: req.body.location
}
// Write to JSON file
fs.writeFile(configfilepath, JSON.stringify(myData, null, 4), function(err) {
if(err) {
res.send(500);
console.log(err);
} else {
setTimeout(function () {
res.redirect('back');
}, 2000)
}
});
});
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?