小编Luk*_*kas的帖子

在DOM对象上设置属性时如何避免无参数重新分配

我有一个方法,其主要目的是在DOM对象上设置属性

function (el) {
  el.expando = {};
}
Run Code Online (Sandbox Code Playgroud)

我使用AirBnB的代码样式使ESLint抛出no-param-reassign错误:

错误赋值函数参数'el'no-param-reassign

在符合AirBnB的代码风格的同时,如何操作作为参数传递的DOM对象?

有人建议使用/* eslint react/prop-types: 0 */引用另一个问题,但如果我没有错,这适用于反应,但不适用于本机DOM操作.

我也不认为改变代码风格是一个答案.我相信使用标准样式的好处之一是在项目中使用一致的代码,并且随意更改规则就像滥用像AirBnB这样的主要代码样式.

为了记录,我在GitHub上询问了AirBnB,他们认为在问题#766中这些问题的出路是什么.

javascript dom eslint

75
推荐指数
5
解决办法
6万
查看次数

Internet Explorer 8显示渐变而不是背景图像

我有一个奇怪的错误.我在一个覆盖一些文本的DIV中平铺一个半透明的1x1像素黄色PNG图像.使用普通的浏览器,一切看起来都应该如此.上面有一些文字和黄色,半透明的覆盖层.

这就是它在Chrome中的外观

但是,在Internet Explorer 8中,不显示1x1 PNG图像,而是显示渐变(!).

这就是它在Internet Explorer 8中的外观

CSS很简单:

.edit_section_overlay {
  position: absolute;
  z-index: 150;

  top: -6px;
  bottom: -6px;
  left: -6px;
  right: -6px;

  border: 1px solid #afad9d;
  background: url('../../images/content/edit/section/overlay/background-color.png') repeat;

  min-height: 34px;
  cursor: move;
}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过像这样的bug,Google也没有帮助我......

这是jsFiddle中的一个演示,http://jsfiddle.net/jUVfS/

css internet-explorer internet-explorer-8

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

有没有办法检测CSS文件何时完全加载?

我一直在测试很多JavaScript和CSS的延迟加载器,它们插入<script>和<link>标签来加载文件.但问题是,<link>标签不会触发,onload因此很难检测到它们何时被加载.我找到的唯一解决方法是display: none;在虚拟元素上设置(在要加载的CSS文件中)并轮询该元素以检查它何时被设置为display:none.但是,除了丑陋之外,当然只适用于单个CSS文件.

所以我在想; 有没有其他方法可以检测是否已加载CSS文件?

javascript css lazy-loading

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

Bootstrap中可水平滚动的卡列表

我正在尝试创建一个水平的卡片列表,其中一次显示3张卡片,其他卡片可水平滚动,如下所示:

可水平滚动的卡片列表

这可以很容易地使用CSS完成,但我想使用Bootstrap来做到这一点.Bootstrap 4附带卡片,通过材料设计推广,它们与Bootstrap中的任何其他东西一样易于使用.对于这个例子而不是卡片,它也可以是常规div的.

我正在努力的事情是创建一个可滚动的X卡(或div)容器,其中3个一次显示,其他溢出到右边并可滚动.我不确定如何使用Bootstrap给卡片(或div)一个宽度,这样一次显示3个,而右边的那些则位于它们旁边.

css twitter-bootstrap twitter-bootstrap-4 bootstrap-4

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

你能动态地将局部变量添加到函数中吗?

我正在使用对象来命名我的JavaScript代码.这些对象通常包含使用的函数,这些函数将this-pointer 映射到对象本身apply.但是,我发现this每次我想访问对象的其他函数或属性时都使用-pointer 是不方便的,特别是因为在很多情况下我使用new-operator以使用类的方式使用函数对象.new Line()如果是,我宁愿写作new this.Line().

如果你能像php那样将函数局部变量添加到函数中会很棒extract(伪代码跟随,它有点复杂)

var sample_object = {
  "some_function": function() {}
}

test() {
  extract(sample_object);
  some_function();   // imported from sample_object
}
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

javascript

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

将字符串写入Swift中的NSOutputStream

我试图写一个StringNSOutputStream斯威夫特.使用Objective C编写字符串通常可以将其作为NSData传递

NSData *data = [[NSData alloc] initWithData:[mystring dataUsingEncoding:NSASCIIStringEncoding]];
[outputStream write:[data bytes] maxLength:[data length]];
Run Code Online (Sandbox Code Playgroud)

这不适用于swift

var data: NSData = mystring.dataUsingEncoding(NSUTF8StringEncoding)!
outputStream.write(data, maxLength: data.length)
Run Code Online (Sandbox Code Playgroud)

这会产生错误

'NSData'无法转换为'UnsafePointer'

用于将数据写入流的行.

你如何在Swift中向NSOutputStream写一个String?

macos swift xcode6

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

禁用水化/仅部分水化 Next.js 应用程序

是否可以在 Next.js 中强制使用SSR-only模式并且仅部分地对页面进行水合?假设我有这个应用程序:

组件/dynamic.jsx

export default () => (
  <button onClick={() => console.log("I have been clicked")}>Click me</button>
)
Run Code Online (Sandbox Code Playgroud)

页面/index.jsx

import DynamicComponent from "../components/dynamic.jsx";

export default () => (
  <div>
    <h1>Hello World</h1>
    <p>Lorem ipsum</p>
    <Hydrate>
      <DynamicComponent />
    </Hydrate>
  </div>
);
Run Code Online (Sandbox Code Playgroud)

现在假设我们正在渲染pages/index.jsxNext.js因此它将在服务器上渲染并在客户端上完全水合。出于性能原因(缩小包大小,减少执行时间)并让应用程序更好地播放广告 () 我只想DynamicComponent在客户端上水合,最多只为客户端加载 JavaScript DynamicComponent

这可能与

  • 反应?
  • 下一个.js?

谢谢

reactjs hydration next.js

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

无法缩小此文件中的代码

我正在编写要放的JavaScript库npm。我目前在另一个项目中使用该库,并已使用其GitHub存储库将其添加为依赖项:

"dependencies": {
  // ... others
  "react-web-component": "LukasBombach/react-web-component",
}
Run Code Online (Sandbox Code Playgroud)

我还将Webpack与一起使用UglifyJsPlugin。现在,当我要构建我的项目时,出现错误:

编译失败。

无法缩小此文件中的代码:

./packages/react-scripts/node_modules/react-web-component/src/index.js第18:0行

在此处阅读更多信息:https : //github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#npm-run-build-fails-to-minify

错误命令失败,退出代码为1。

这是我图书馆的问题。当我从我的部门(以及我的代码)中删除它时,编译工作正常。

我无法弄清楚问题出在哪里,我的代码似乎很简单:

const ReactDOM = require('react-dom');
const retargetEvents = require('./retargetEvents');
const getStyleElementsFromReactWebComponentStyleLoader = require('./getStyleElementsFromReactWebComponentStyleLoader');

module.exports = {
  create: function(app, tagName, options) {
    const proto = Object.create(HTMLElement.prototype, {
      attachedCallback: {
        value: function() {
          const shadowRoot = this.createShadowRoot();
          const mountPoint = document.createElement('div');
          getStyleElementsFromReactWebComponentStyleLoader().forEach(style =>
            shadowRoot.appendChild(style)
          );
          shadowRoot.appendChild(mountPoint);
          ReactDOM.render(app, mountPoint);
          retargetEvents(shadowRoot);
        },
      },
    });
    document.registerElement(tagName, { prototype: proto });
  },
}; …
Run Code Online (Sandbox Code Playgroud)

javascript minify node.js uglifyjs2

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

使用 Rollup 混合默认导出和命名导出

我正在使用 TypeScript 和 Rollup为 Node.js编写一个蓝牙库。我想让用户以这些方式导入我的库组件

import Sblendid from "@sblendid/sblendid";
import Sblendid, { Peripheral } from "@sblendid/sblendid";

const Sblendid = require("@sblendid/sblendid");
const { Peripheral } = require("@sblendid/sblendid");
Run Code Online (Sandbox Code Playgroud)

我的项目结构如下所示:

root
 ? rollup.config.ts
 ? src
    ? index.ts
    ? sblendid.ts
    ? peripheral.ts
Run Code Online (Sandbox Code Playgroud)

相应的代码是这样的:

index.ts

export {
  default,
} from "./sblendid";

export {
  default as Peripheral,
} from "./peripheral";
Run Code Online (Sandbox Code Playgroud)

sblendid.ts

export default class Sblendid {}
Run Code Online (Sandbox Code Playgroud)

peripheral.ts

export default class Peripheral {}
Run Code Online (Sandbox Code Playgroud)

我用 Rollup 捆绑了所有东西,我的整个配置是这样的:

import typescript from "typescript";
import commonjs from …
Run Code Online (Sandbox Code Playgroud)

javascript npm typescript

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

webpack捆绑包是否多次等同于对等依赖项?

假设我创建一个名为use react-web-component和import 的npm包react-dom,如下所示:

import ReactDOM from 'react-dom';

export default {
  create: function (app, tagName, options) {
    // Some code
    ReactDOM.render(app, mountPoint);
  }
};
Run Code Online (Sandbox Code Playgroud)

我会把它发布在npm上react-web-component;

现在我创建了一个使用webpackreact所有其他好东西的第二个项目,我将使用我自己的npm包,如下所示:

的package.json

{
  "devDependencies": {
    "react-web-component": "^1.0.0",
    "react": "^15.5.4",
    "react-dom": "^15.5.4"
  },
}
Run Code Online (Sandbox Code Playgroud)

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import ReactWebComponent from 'react-web-component';
import App from './App';

ReactWebComponent.create(<App />, 'my-react-web-component');
Run Code Online (Sandbox Code Playgroud)

Woud webpack,当它捆绑应用程序包ReactDom两次或一次?答案是两次,有没有机会让我的项目ReactDom只捆绑一次?

webpack

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