小编Tom*_*ley的帖子

使用ES6合并两个对象

我确定之前已经问过这个问题,但我找不到我想要的答案,所以这里有:

我有两个对象,如下:

const response = {
  lat: -51.3303,
  lng: 0.39440
}

let item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK'
}
Run Code Online (Sandbox Code Playgroud)

我需要将这些合并在一起形成:

item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK',
  location: {
    lat: -51.3303,
    lng: 0.39440
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

item.location = {}
item.location.lat = response.lat
item.location.lng = response.lng
Run Code Online (Sandbox Code Playgroud)

但是,我觉得这不是最好的方法,因为ES6引入了很酷的解构/分配东西; 我尝试深度对象合并,但遗憾的是不支持:(我也查看了一些ramda函数,但看不到任何适用的东西.

那么使用ES6合并这两个对象的最佳方法是什么?

javascript ecmascript-6

85
推荐指数
2
解决办法
9万
查看次数

防止弹性项目高度扩展以匹配其他弹性项目

我在容器内有两个元素,它们通过使用弹性盒并排放置.在第二个元素(.flexbox-2)上,我在CSS中设置它的高度.但是,第一个元素(.flexbox-1)将匹配高度.flexbox-2.我如何停止.flexbox-1匹配高度.flexbox-2,而只是保持其自然高度?

这是我到目前为止(也可用作jsFiddle)

.container {
  display: -webkit-flex;
  -webkit-flex-direction: row;
}
.flexbox-1 {
  -webkit-flex: 1;
  border: solid 3px red;
}
.flexbox-2 {
  -webkit-flex: 2;
  border: solid 3px blue;
  height: 200px;
  margin-left: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="flexbox-1">.flexbox-1</div>
  <div class="flexbox-2">.flexbox-2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css flexbox

68
推荐指数
3
解决办法
4万
查看次数

使用原始URL而不是代理,使用浏览器同步

最近从Grunt.js切换到Gulp.js,因为有多个人告诉我它有多好和多快(这是真的!).我已将BrowserSync添加到我的Gulpfile.js中,使其更容易在多个设备上进行测试.它工作得很好,设置简单.对于上下文,我在95%的工作时间内开发WordPress站点,并在启用了Multisite的Apache虚拟主机上运行它们,并为每个客户端设置了许多本地子域,例如site1.domain.dev,site2 .domain.dev等.这很好用,我已经这样做了几年了.但是,由于BrowserSync需要为我的站点创建代理,因此它能够同步并注入CSS,因此当前通过BrowserSync运行的站点将路由到http://localhost:3000.这很好,我理解为什么它需要发生,但它与WordPress有点混乱(因为URL不一样等),加上我是一个大的TypeKit/Cloud字体用户,这意味着因为该网站是被路由到localhost,没有加载任何字体.当然,我可以http://localhost:3000在TypeKit上添加每个站点的域名列表,但这感觉就像是一种解决方法,并且想知道是否有更好的方法来做到这一点.

我已经在我的Gulpfile.js的BrowserSync部分添加了:

gulp.task('serve', function() {
    browserSync({
        proxy: 'site1.domain.dev'
    });

    gulp.watch('assets/styles/source/**/*.scss', ['styles']);
    gulp.watch('*.php', reload);
    gulp.watch('assets/js/source/*.js', ['scripts']);
    gulp.watch('assets/js/plugins/**/*.js', ['plugins']);
});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,BrowserSync是否可以直接转到我的URL(http://site1.domain.dev)而不是路由它http://localhost:3000?作为一个额外的好处,如果可以从BrowserSync代理属性中删除域,那将是非常棒的,因为我使用自动化脚本在我的WP Multisite安装上设置新站点,并且真的不想编辑我的gulpfile每次我建立一个新网站.

谢谢您的帮助!:)

proxy localhost gulp browser-sync

42
推荐指数
3
解决办法
4万
查看次数

'this'在Mongoose预保存挂钩中未定义

我为User实体制作了一个Mongoose数据库模式,并希望在updated_at字段中添加当前日期.我正在尝试使用.pre('save', function() {})回调,但每次运行它时都会收到一条错误消息,告诉我this未定义.我也决定使用ES6,我想这可能是一个原因(尽管一切正常).我的Mongoose/Node ES6代码如下:

import mongoose from 'mongoose'

mongoose.connect("mongodb://localhost:27017/database", (err, res) => {
  if (err) {
    console.log("ERROR: " + err)
  } else {
    console.log("Connected to Mongo successfuly")
  }  
})

const userSchema = new mongoose.Schema({
  "email": { type: String, required: true, unique: true, trim: true },
  "username": { type: String, required: true, unique: true },
  "name": {
    "first": String,
    "last": String
  },
  "password": { type: String, required: true },
  "created_at": { type: Date, default: Date.now …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js ecmascript-6

15
推荐指数
1
解决办法
9728
查看次数

如何在Heroku中卸载此buildpack?

heroku-buildpack-php-tyler几天前安装在我的Heroku应用程序上,这一切似乎都运行良好.我通过运行以下命令安装它:

heroku config:set BUILDPACK_URL=git://github.com/iphoting/heroku-buildpack-php-tyler.git
Run Code Online (Sandbox Code Playgroud)

但是我现在想删除它.我尝试使用以下命令:

heroku config:unset BUILDPACK_URL=git://github.com/iphoting/heroku-buildpack-php-tyler.git
Run Code Online (Sandbox Code Playgroud)

但它返回以下错误消息:

取消设置BUILDPACK_URL = git://github.com/iphoting/heroku-buildpack-php-tyler.git并重新启动hnf-heroku ...失败

!没找到资源`

因为Heroku没有正式支持PHP,所以没有太多关于此的文档.那么如何卸载这个buildpack呢?

php heroku buildpack

8
推荐指数
2
解决办法
8203
查看次数

停止CSS3列打破段落

在使用CSS3列时,如何停止浏览器分解段落?我有这个代码:

<div class="container">
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
    <div class="box"><!-- text --></div>
</div>

.container {
    column-count: 3;
 }
Run Code Online (Sandbox Code Playgroud)

这是我想要的视觉表现.在左边,默认情况下会发生什么,在右边,我想要发生什么.

css3列

我不介意列是不等长的,重要的是没有任何div在列之间被打破.

html css layout css3 multiple-columns

8
推荐指数
2
解决办法
4948
查看次数

Webpack,要求不是功能

运行我的webpack构建的React应用时出现错误-错误如下:

webpack-internal:///1495:3
var crypto = require('crypto');
             ^

TypeError: require is not a function
    at eval (webpack-internal:///1495:3:14)
    at Object.<anonymous> (/path/to/project/build/main.js:9739:1)
    at __webpack_require__ (/path/to/project/build/main.js:21:30)
    at eval (webpack-internal:///1494:1:20)
    at Object.<anonymous> (/path/to/project/build/main.js:9733:1)
    at __webpack_require__ (/path/to/project/build/main.js:21:30)
    at eval (webpack-internal:///692:8:18)
    at Object.<anonymous> (/path/to/project/build/main.js:4515:1)
    at __webpack_require__ (/path/to/project/build/main.js:21:30)
    at eval (webpack-internal:///1491:12:23)
Run Code Online (Sandbox Code Playgroud)

我不知道该错误来自哪个模块。我正在通过以下命令运行我的项目:

NODE_ENV=development nodemon --watch build/ build/main.js
Run Code Online (Sandbox Code Playgroud)

这是我的webpack配置:

const path = require('path')
const fs = require('fs')
const webpack = require('webpack')

const webpackConfig = {
  context: path.join(__dirname, '..'),
  entry: ['babel-polyfill', path.join(__dirname, '../src/entry.js')],
  target: 'node',
  output: {
    path: path.resolve(__dirname, '../build'), …
Run Code Online (Sandbox Code Playgroud)

node.js webpack

6
推荐指数
1
解决办法
3916
查看次数

使用 sed 在主机文件的行尾添加地址

我的主机文件中有一个特定行用于本地 Wordpress Multisite 安装,如下所示:

127.0.0.1       localhost domain.dev site1.domain.dev site2.domain.dev
Run Code Online (Sandbox Code Playgroud)

我正在编写一个 Shell 脚本,可以运行该脚本直接从终端在我的多站点安装上创建一个新的单独站点。每当运行此命令时,我都需要能够向 /etc/hosts 文件添加新记录。在 Shell 文件中,我使用$site_addr站点名称作为变量。然后,您需要将 .domain.dev 添加到其末尾。我使用 sed 完成的一个示例(不起作用):

sed -i'.bak' '7i7 $site_addr.domain.dev' /etc/hosts
Run Code Online (Sandbox Code Playgroud)

我需要编辑的主机文件(上面)中的行是第 7 行,因此是7i7sed 命令中的行。我想在行尾添加新记录。我还想创建一个备份主机文件,以防出现问题。

感谢您的帮助,希望我已经解释得足够好:)

unix bash shell sed

5
推荐指数
1
解决办法
3715
查看次数

使用sed编辑JSON文件

我需要编辑一个JSON文件,使用sed,将一些数据添加到文件中.JSON如下:

{
  'name':
  // more attributes that are already filled in 
}
Run Code Online (Sandbox Code Playgroud)

我写了这个sed命令试着这样做:

sed "s/(\'name\':)/\1\"hello\"\,/g" /path/to/file.json
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到此错误:

sed: \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

预期结果是:

{
  'name': "hello",
  // more attributes here, left untouched
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个不好的方法,但我不认为我能够使用这样的工具,jq因为该文件将在服务器上编辑,我无法jq在服务器上安装.如果有人有更好的解决方案,我会非常有兴趣听到它.谢谢!

regex bash json sed

2
推荐指数
2
解决办法
8452
查看次数

使用 Collections 获取 HashMap 中最大值的键

我有一个任意对象的 HashMap,其Double值为 value: HashMap<MyObject, Double> myMap = new HashMap<>();。我可以在使用Double中获得最大值,但我需要获得该值对应的键。有没有一种简单的方法可以使用API 来做到这一点,或者我需要一个迭代器吗?我考虑过获取最大值的位置,然后在 HashMap 中查询该位置并获取密钥,但我不知道该怎么做。HashMapCollections.max(myMap.values());Collections

编辑:如果需要,我可以将类型从 a 更改HashMap为其他类型,但这两种类型(Object 和 Double)需要保持不变。

java collections

2
推荐指数
1
解决办法
1万
查看次数

ISRC在Apple Music/iTunes中查找歌曲

我正在开发一个iOS应用程序,它从外部源检索歌曲ISRC.然后我需要使用Apple的MusicKit SDK使用ISRC在Apple Music/iTunes中获取歌曲.是否有可能做到这一点?在宋资源类型有ISRC的歌曲属性WHN你做一首歌曲的GET请求被退回,但要求使用苹果的音乐歌曲ID进行查找.那么我可以使用ISRC来查询Apple Music的歌曲吗?也很高兴在iTunes Search API上查找然后获取ID(我认为它们在Apple Music和iTunes中是相同的?)然后使用该ID查询Apple Music API.

我也在Apple Developer MusicKit论坛上问了这个问题,但到目前为止,还没有人回答过我.

itunes-sdk apple-musickit

2
推荐指数
1
解决办法
938
查看次数

在ngAfterViewInit中使用已破坏的视图进行changeDetection

我工作的组织中的私有(但开放源代码)Angular程序包具有如下代码:

ngAfterViewInit(): void {
  setTimeout(() => {
    this.changeDetector.detectChanges();
    // do more things
  });
}
Run Code Online (Sandbox Code Playgroud)

我们在应用程序中实现此程序包(该程序包是为了引入通用的组件,以便组织中的前端开发人员不必多次实现事物,并且必须使用通用的设计语言来保持一致性)。但是,在使用该组件时,会调用它,并反复显示然后销毁该组件,最终它将停止工作,并在控制台中出现此错误:

Error: ViewDestroyedError: Attempt to use a destroyed view: detectChanges
Run Code Online (Sandbox Code Playgroud)

我正在尝试寻找一种方法,以确保如果组件已被破坏,则上述代码不会运行。我考虑过使用ngOnDestroy生命周期方法:

ngOnDestroy(): void {
  this.changeDetector.detach();
}
Run Code Online (Sandbox Code Playgroud)

但是我不确定我还可以放入那里以检查视图是否正常。我还想到了类似的东西:

if (!this.changeDetector.destroyed) {
  this.changeDetector.detectChanges();
}
Run Code Online (Sandbox Code Playgroud)

但是没有像这样的destroyed存在ChangeDetectorRef

确保即使重复显示和销毁该错误也不会显示并且组件正常工作的正确方法是什么?

javascript angular

1
推荐指数
1
解决办法
3460
查看次数