我对CommonJS,AMD和RequireJS仍感到非常困惑.即使阅读了很多.
我知道CommonJS(以前称为ServerJS)是一个用于在浏览器外部使用语言时定义一些JavaScript规范(即模块)的组.CommonJS模块规范有一些像Node.js或RingoJS的实现,对吧?
CommonJS,异步模块定义(AMD)和RequireJS之间有什么关系?RequireJS是CommonJS模块定义的实现吗?如果是的话,那么什么是AMD呢?
有没有办法使用PHP获取cURL请求的标题和正文?我发现这个选项:
curl_setopt($ch, CURLOPT_HEADER, true);
Run Code Online (Sandbox Code Playgroud)
将返回身体加上标题,但后来我需要解析它以获取身体.有没有办法以更有用(和更安全)的方式获得两者?
请注意,对于"单个请求",我的意思是避免在GET/POST之前发出HEAD请求.
在glob匹配中编辑文件时,以下Gulpjs任务正常工作:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
Run Code Online (Sandbox Code Playgroud)
但是,对于新文件或已删除文件,它不起作用(它不会被触发).有什么我想念的吗?
编辑:即使使用grunt-watch插件,它似乎无法正常工作:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + …Run Code Online (Sandbox Code Playgroud) 在我的Windows安装PATH包括C:\Program Files\nodejs,可执行文件node.exe.我能够node从shell 启动,以及npm.我想安装新的可执行文件C:\Program Files\nodejs,但似乎无法实现.
设置NODE_PATH和NODE_MODULES变量不会改变任何东西:%appdata%\npm默认情况下仍会安装.
如何更改全局安装路径?
一个User有一个Package与它相关联.许多用户可以参考相同的包.User没有Package定义就不存在.User应该拥有这种关系.关系是双向的,因此其中Package包含零个或多个用户.
这些要求导致了Doctrine 2中的ManyToOne关系User和OneToMany关系Package.但是package_id在user表(即外键)中允许null值.我试过设置nullable=false但命令:
php app/console doctrine:generate:entities DL --path="src" --no-backup
Run Code Online (Sandbox Code Playgroud)
说这种nullable关系没有属性ManyToOne.我错过了什么?
class User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
*/
private $package;
}
class Package
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="User", …Run Code Online (Sandbox Code Playgroud) 当发送请求/customers/41224d776a326fb40f000001和文件_id 41224d776a326fb40f000001不存在时,doc是null,我正在返回404:
Controller.prototype.show = function(id, res) {
this.model.findById(id, function(err, doc) {
if (err) {
throw err;
}
if (!doc) {
res.send(404);
}
return res.send(doc);
});
};
Run Code Online (Sandbox Code Playgroud)
但是,如果_id不匹配Mongoose所期望的"格式"(我想),例如GET /customers/foo返回一个奇怪的错误:
CastError:对于路径"_id"处的值"foo",转换为ObjectId失败.
那么这个错误是什么?
我在我的Windows 7 x64开发机器上安装了Node.js,手动方式:
mkdir C:\Devel\nodejs
cd C:\Devel\nodejs
set NODE_PATH=%CD%
setx /M PATH "%PATH%;%NODE_PATH%"
setx /M NODE_PATH "%NODE_PATH%\node_modules"
Run Code Online (Sandbox Code Playgroud)
我已将主节点x64二进制文件与npm包管理器放在一起C:\Devel\nodejs.像魅力一样工作,我可以在不处理安装程序的情况下更新主二进制文件.
我无法解决的唯一问题是移动缓存文件夹.当我安装本地包时:
npm install express
Run Code Online (Sandbox Code Playgroud)
...缓存放在%APP_DATA%\npm-cache文件夹下.我想把它改成:
C:\Devel\nodejs\npm-cache
如何更改npm缓存文件夹或完全禁用它?
我应该在列上定义一个单独的索引email(用于搜索目的),还是"自动"添加索引以及UNIQ_EMAIL_USER约束?
CREATE TABLE IF NOT EXISTS `customer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`first` varchar(255) NOT NULL,
`last` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_SLUG` (`slug`),
UNIQUE KEY `UNIQ_EMAIL_USER` (`email`,`user_id`),
KEY `IDX_USER` (`user_id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
编辑:正如Corbin所建议我EXPLAIN SELECT * FROM customer WHERE email = 'address'在空桌上查询.这是结果,我不知道如何解释它:
id select_type type possible_keys key key_len …Run Code Online (Sandbox Code Playgroud) 这是我与MongoDB的第一天,所以请跟我一起轻松:)
我无法理解$unwind操作员,也许是因为英语不是我的母语.
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
Run Code Online (Sandbox Code Playgroud)
我想项目操作员是我能理解的(就像SELECT是,不是吗?).但是,$unwind(引用)为每个源文档中的展开数组的每个成员返回一个文档.
这是一个JOIN吗?如果是,如何的结果$project(有_id,author,title和tags字段)可以用比较tags阵列?
注意:我从MongoDB网站上采用了这个例子,我不知道tags数组的结构.我认为这是一个简单的标签名称数组.
什么之间的区别Doctrine\Common\Persistence\ObjectManager,并Doctrine\ORM\EntityManager在自定义表单类型使用的时候吗?
我可以使用$this->em->getRepository()和来获取存储库$this->om->getRepository().
class MyFormType extends \Symfony\Component\Form\AbstractType
{
/**
* @var Doctrine\ORM\EntityManager
*/
protected $em;
public function __construct(Doctrine\ORM\EntityManager $em)
{
$this->em = $em;
}
}
Run Code Online (Sandbox Code Playgroud)
代替:
class MyFormType extends \Symfony\Component\Form\AbstractType
{
/**
* @var Doctrine\Common\Persistence\ObjectManager
*/
protected $om;
public function __construct(Doctrine\Common\Persistence\ObjectManager $om)
{
$this->om = $om;
}
}
Run Code Online (Sandbox Code Playgroud)