我试图从JS到PHP借用一些编程范例(只是为了好玩).有办法吗?
$a = (function(){
return 'a';
})();
Run Code Online (Sandbox Code Playgroud)
我当时认为用这个组合use可以很好地隐藏变量JS样式
$a = (function(){
$hidden = 'a';
return function($new) use (&$hidden){
$hidden = $new;
return $hidden;
};
})();
Run Code Online (Sandbox Code Playgroud)
现在我需要这样做:
$temp = function(){....};
$a = $temp();
Run Code Online (Sandbox Code Playgroud)
这似乎毫无意义......
我有一个使用同步API来获取其数据的应用程序,并且需要在本地存储所有数据.数据集本身非常大,我不愿意将它存储在内存中,因为它可以包含数千条记录.由于我不认为实际的数据结构是相关的,让我们假设我正在构建一个需要离线访问的电子邮件客户端,并且我希望我的存储机制是IndexedDB(它是异步的).
我知道一个简单的解决方案是不将数据结构作为我的状态对象的一部分,并且仅使用所需数据填充状态(例如,当触发EMAIL_OPEN操作时将电子邮件内容存储在状态中).这很简单,特别是对于redux-thunk.
但是,这意味着我需要妥协两件事:
有关如何将redux与非内存状态属性一起使用的最佳实践吗?我发现最难解决的问题是redux依赖于同步API,因此我无法用异步状态对象替换我的状态对象(除非我完全删除redux并将其替换为我自己的异步实现和连接器).
我找不到使用谷歌的答案,但如果已经有很好的资源,我也很乐意指出.
更新:问题得到了回答,但想要更好地解释我是如何实现它的,以防有人遇到它:
主要思想是使用简单的redux reducer维护客户端和服务器的更改列表,并使用连接器监听这些更改列表以更新IDB,并使用客户端更改来更新服务器:
这种方法唯一需要注意的是,由于真实状态存储在IDB中,因此我们确实失去了拥有一个状态对象的一些价值(并且更难以倒带/快进状态)
我想在不创建实例的情况下检查类是否是另一个类的子类.我有一个类作为参数接收类名,作为验证过程的一部分,我想检查它是否属于特定的类系列(以防止安全问题等).这样做有什么好办法吗?
编辑 - 使用Chrome网络检查器查看Cookie,似乎无论Cookie的过期价值是什么,浏览器都会将其设置为会话Cookie并根据请求删除它.
我正在使用Node.js和Express为我正在教授的课程构建一个CORS示例.
但是,尽管从服务器设置了cookie,但它们不会在以下请求中发送回服务器.这几乎意味着我不能使用任何简单的会话管理器.
知道我在这里缺少什么吗?为什么浏览器不将域设置的cookie发送回该域?这不应该自动发生吗?
编辑 - 一些代码示例:设置XHR请求:
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.widthCredentials = true;
xhr.onreadystatechange = function(res){
if (xhr.readyState == 4){
cb(res,xhr);
}
};
xhr.setRequestHeader("Content-Type",'application/json');
xhr.setRequestHeader('Accept','application/json');
xhr.send(JSON.encode({param:some_param}));
Run Code Online (Sandbox Code Playgroud)
服务器:
function allowCrossDomain(req,res,next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Requested-With');
if (req.method!='OPTIONS') return next();
res.send(204);
}
//while configuring express
app.use(allowCrossDomain)
Run Code Online (Sandbox Code Playgroud)
值得一提的是,我尝试过各种npm中间件,这些中间件做同样的事情而没有可观察到的差别
至于场景:
我一直在使用模拟器开发一个本机应用程序.在模拟器(iOS)上,应用程序加载速度非常快(例如在重新加载时).但是,当我尝试将应用程序加载到设备时,它会在启动画面中花费1-3分钟,然后再加载到应用程序中.
我的项目相当小,除了javascript之外没有额外的资源.看看文档,我找不到可能导致问题的原因,但我怀疑它与没有从打包器本地服务器获取JS这一事实有关.
我究竟做错了什么?
(顺便说一句 - react-native v0.31)
我有一个想要重载的函数,以便它arg2根据 的值arg1(有一个已知值列表)知道 的类型。
一个非常粗略的例子来演示我正在尝试做的事情:
interface CatArgs {legs : number}
interface FishArgs {fins: number}
type CarOrFishArgs = CatArgs | FishArgs;
type Animal = Cat | Fish;
type Type = 'Cat' | 'Fish';
class Cat{
constructor(args:CatArgs){}
}
class Fish {
constructor(args:FishArgs){}
}
export declare function getAnimal(type:'Cat', args:CatArgs): Cat;
export declare function getAnimal(type:'Fish', args:FishArgs): Fish;
export function getAnimal(type:Type, args:CarOrFishArgs): Animal {
switch (type) {
case 'Cat':
return new Cat(args as CatArgs);
case 'Fish':
return new Fish(args as FishArgs);
} …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在我的cygwin上安装mysql.在repo上没有这个包,所以我想我会编译一个,但我无法弄清楚我需要使用哪个包,也不知道我应该发送哪些选项./configure
有小费吗?
我有一个案例,我试图用另一个模式替换某个模式.我的问题是我只需要替换该模式的最后一次出现,而不是全部.我发现了这个问题:
但它不符合我的需要.作为背景,我会说我正在尝试替换CSS规则,但是对于当前示例,我们来看看这个文本:
abcd:bka:
bbb:aad:
accx:aaa:
bbb:a0d:
cczc:aaa:
Run Code Online (Sandbox Code Playgroud)
假设我只想替换bbb的值.我现在的规则是
text.replace(/(\s*bbb:)([^:]+)/,"$1aaa")
Run Code Online (Sandbox Code Playgroud)
但它只会取代第一场比赛,而我希望它取代最后一场比赛.我目前的模式实际上比这个更复杂,但我认为伪问题就足够了.
说我有一个文件 /var/www/foo/test.php
我如何从中发现它的路径.我正在尝试创建一个"添加到包含路径"操作,为此我需要绝对路径.
我有一个程序,它返回一个文件名列表.我需要将这些文件的内容传递给另一个程序.
我知道如何使用cat传递内容:
cat file1 file2 file3 | some_program
Run Code Online (Sandbox Code Playgroud)
我想做的是:
list=`get_file_list`
cat ${list} | some_program
Run Code Online (Sandbox Code Playgroud)
虽然执行上述操作只会传递列表变量的内容,而不是文件的内容.
我有一个商店,其中有多个我想要查询的索引。为了举例,我们假设我有一个消息存储,其中包含 user_id 索引和 create_date (时间戳)(并且假设我有索引 - user_id / create_date / user_id, create_date
我知道如何通过 id 查询用户:
var range = IDBKeyRange.only('123');
store.index('user_id').openCursor(range).onsuccess= function(e){....};
Run Code Online (Sandbox Code Playgroud)
我知道如何按日期查询:
var range = IDBKeyRange.lowerBound(Date.now()-24 * 60 * 1000))
store.index('create_data').openCursor(range).onsuccess = function(e){....};
Run Code Online (Sandbox Code Playgroud)
购买我不知道如何一起查询两者。我知道我可以使用 JS 解析两者中任何一个的结果,但我想知道是否可以使用 IDB 来做到这一点。
编辑-我想做的伪查询是
user_id=123 AND create_date < (NOW() - 24 * 60 * 1000)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用gulp将browserify + babelify与uglifyjs捆绑在一起.但是,从我的项目生成的源图只给了我捆绑的版本,而不是捆绑的版本.
这是我的设置:
var gulp = require('gulp'),
source = require('vinyl-source-stream'),
browserify = require('browserify'),
gutil = require('gulp-util'),
buffer = require('vinyl-buffer'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify'),
file = 'index.js';
gulp.task('build', function(){
return browserify({
entries: [file],
transform: ["babelify"]
})
.bundle()
.pipe(source(file))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./public/js'))
.pipe(gutil.noop())
})
Run Code Online (Sandbox Code Playgroud)
有没有办法让我创建一个捆绑babel => browserify => uglify并仍然将地图返回给我的pre-babel文件的构建?
我也不介意不使用gulp(我实际上更喜欢咕噜声,但这个设置过去常常适合我).
javascript ×4
php ×3
babeljs ×1
bash ×1
browserify ×1
class ×1
closures ×1
cors ×1
cygwin ×1
express ×1
gulp ×1
indexeddb ×1
inheritance ×1
lambda ×1
mysql ×1
node.js ×1
oop ×1
php-5.3 ×1
react-native ×1
redux ×1
regex ×1
typescript ×1
uglifyjs ×1