资讯专栏INFORMATION COLUMN

RDD的前端背包

csRyan / 1120人阅读

摘要:中文最小字体问题添加属性以取消浏览器的自动调整会使原本应该调整的地方失效原本就是专为了移动端设置的属性,桌面端不适应已修复建议通过缩小来获得小字体。

暂时先堆在一起,等某条目里面的内容超过十条了,就单列出去。

更新历史:

17.7.24

=ADD= typescript —> interface

=ADD= alof awsome net

17.7.23

=ADD= phantomjs 截图图片的一些Tips

=ADD= phantomjs 关于浏览器视口大小的设置

=ADD= typescript 的typeconfig.js

=ADD= typescript 的模块 与 命名空间

=ADD= 添加 会动的ico图标

=ADD= 对Autismi / Inventati的介绍

17.7.13

2017年07月13日 12:21:06 =ADD= 关于vue组件命名方面的东西

17.7.12

2017年07月12日 11:21:06 =ADD= 添加三列布局 + 方形div

2017年07月12日 14:21:06 =ADD= 使用render:ver时的一些细节。

2017年07月12日 21:21:06 =CRE= 添加node条目

2017年07月12日 22:00:06 =CRE= 添加ES6条目

2017年07月12日 22:00:06 =ADD= super对继承类同名方法的调整、覆盖

17.7.09

2017年07月09日 04:21:06 添加phantomjs条目

17.7.08

2017年07月08日 13:32:55 添加Object深赋值

17.7.03

2017年07月04日 04:00:27 添加Vue条目

2017年07月04日 04:00:50 添加Gulp条目

2017年07月04日 04:03:13 更新WebAssembly条目

17.6.24

2017年06月24日 01:20:04 更新WebAssembly条目

2017年06月24日 01:24:02 调整其中的一些内容

2017年06月24日 01:25:59 添加回调的部分

2017年06月24日 01:34:01 去掉标题前面奇奇怪怪的数字 && 调整WASM部分的标题名称

2017年06月24日 01:37:01 去掉文章内笨重的标题

Html 设置文字不可选定

unselectable = "none"

css 背景图片的设置

{background-image:url()}

* 其他属性设置
    * `background-repeat`![](http://ogcng6il8.bkt.clouddn.com/1478875627488_list_0.png)
    * `background-position`![](http://ogcng6il8.bkt.clouddn.com/1478875628328_list_1.png)
前后伪类的使用
​```css
[ele]:after/before {
    content: [字符串]/[url("媒体文件地址")]
}
​```
* 文字可以调整
* 图片不能调整
CSS3 box-shadow 属性

box-shadow属性可以通过chrome调试工具非常方便的进行设置。

如何居中:

1.【推荐】display:flex + justify-content: center;

thebox{
display:flex;
justify-content: center;
}

2.margin + block

thebox{
    display:block;
    marigin:0 auto;
}

3.left:50% + margin-left

thebox{
    left:50%;
    margin-left:-(thebox.width / 2)
}

4.display:inline-block + text-align:center

thebox{
    display:inline-block;
    text-align:center;
}
JS 获取一个element之后如何确定他的大小和位置

回调

async:

所有 async 函数都会隐式返回一个 promise,而 promise 的完成值将是函数的返回值(本例中是 "done")。

我们不能在代码的顶层用 await

感觉上 async/await 还是需要配合Promise来使用。

对象的深赋值

比如下面这种情况

①有

ref = {
  a: "bb",
  c: "dd",
  e: {},
}

②还有

data = {
  a: "cc",
  b: "ee",
  c: {
    d: "ff"
  }
}

③想要有 cover(ref.f,data) 之后

//@after
ref = {
  a: "bb",
  c: "dd",
  e: {
      a: "cc",
    b: "ee",
    c: {
        d: "ff"
    }
  }
}
需要注意的坑主要是

函数中的形参会在函数调用结束之后销毁。

函数参数对于引用类型的实质是一个引用(指向实际数据的指针),即

直接在表层操作该引用,在实质上无效ref = data(X)

进入到实际数据来进行操作则有效ref.a = data(√)

解决

使用递归

通过间接操作来调整实际数据。

function objectAssignObject(ref, data) {
    if (typeof data === "object") {
        Object.keys(data).forEach(function(itm, idx) {
            if (typeof ref[itm] !== "object") {
                ref[itm] = {}
            }
            if (typeof data[itm] !== "object") {
                ref[itm] = data[itm]
            }
            objectAssignObject(ref[itm], data[itm])
        })
    }
}
如何实现如下布局

正方形

css

.square{
    width:100%;
    height:0;
    padding-bottom:100%;
}
三列布局

div:vue

<包裹正方形的div :style="`margin-right:${idx <= 1 ? 5 : 0}%`">

css

.外层的div{
  display:flex;
  flex-wrap:wrap;
}
.包裹正方形的div{
  width:30%;
}
怎么调用json文件里面的数据?

使用ajax方式来获得它。

使用JSON类方法来处理它。

Node json文件

网络上的资源通过node-fetch

直接通过require函数获得。

ES6 配合super对继承类同名方法的调整、覆盖
// 类A继承了类B
// 类B中已经有eat方法

//...类A中
eat(url){
  super.eat(url);// 这是合法的
  doOtherThing();
  this.anotherThing();
}
///类A中...
Typescript 模块引入 commonjs

import thing = require("cmjs-module")

amd

import thing from "amd-module"

编译器工作方式

一个常见的错误是使用/// 引用模块文件,应该使用import。 要理解这之间的区别,我们首先应该弄清编译器是如何根据import路径(例如,import x from "...";import x = require("...")里面的...,等等)来定位模块的类型信息的。

编译器首先尝试去查找相应路径下的.ts.tsx再或者.d.ts。 如果这些文件都找不到,编译器会查找外部模块声明。 回想一下,它们是在.d.ts文件里声明的。

tsconfig.json glob模式里的某部分只包含*或`.*

如果一个glob模式里的某部分只包含*.*,那么仅有支持的文件扩展名类型被包含在内(比如默认.ts.tsx,和.d.ts, 如果allowJs设置能true还包含.js.jsx)。

同时使用files&include&exclude

如果指定了"files""include",编译器会将它们结合一并包含进来。 使用"outDir"指定的目录下的文件永远会被编译器排除,除非你明确地使用"files"将其包含进来(这时就算用exclude指定也没用)。

使用"include"引入的文件可以使用"exclude"属性过滤。 然而,通过"files"属性明确指定的文件却总是会被包含在内,不管"exclude"如何设置。 如果没有特殊指定,"exclude"默认情况下会排除node_modulesbower_componentsjspm_packages目录。

constructor

一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

class Point {
}

// 等同于
class Point {
  constructor() {}
}
那么如果已经定义了一个带参数的constructor,这个空的construtor还会有么?

其实为了好理解,建议都添加一个空contructor,这是个好习惯?。

但是——⬆️⬆️这不可能⬆️⬆️

因为 ES6 规定一个类只能有一个contructor!!!

contructor的重载可以通过内部对arg进行判断来实现。

interface private? & public?

接口描述了类的公共部分,而不是公共和私有两部分。 它不会帮你检查类是否具有某些私有成员。

Chrome 中文Chrome 最小字体-12px 问题

添加 -webkit-text-size-adjust:none 属性以取消浏览器的自动调整

.classstyle{ -webkit-text-size-adjust:none; font-size:9px; }

X-》1.会使原本应该调整的地方失效

X-》2.原本就是专为了移动端设置的属性,桌面端不适应(bug已修复)

【建议】通过缩小来获得小字体。-webkit-transform: scale(0.75);

X-》浏览器兼容问题

WebAssembly wasm简介

新的格式而已:Wasm 不是一种新的编程语言,而是一种新的格式,这个格式适合将 C/C++ 程序编译到 Web 上来运行,同时又满足了平台无关、高效、轻量等特性。

可被直接执行:Wasm 可以直接被 JS 引擎加载和执行,省去了从 JS 到 Bytecode,从 Bytecode 到机器码的转换时间,因此十分高效。

AST明晰性:Wasm 的文本格式 Wast 包含了一个基于 S 表达式的 AST 描述文本,在这个文件中我们可以清楚的看到这个 Wasm 模块的导出函数内存分配的情况。

JS引擎配适:WebAssembly 的二进制模块格式 Wasm 可以直接通过 JS 引擎提供的 WebAssembly 接口进行调用。

wasm开发 官方

基于 WebAssembly 的开发主要分为两个部分:

写好业务、设置接口第一部分为 C/C++ 部分的主要业务处理逻辑,同时需要设置一些需要在 JS 层面调用的“预置接口”。

连接接口、填充逻辑:第二部分是在 JS 层面进行 Wasm 的模块对接,同时需要填充内存或者预置函数的逻辑,填充数据集的操作。

感觉有些类似于使用node.per编译c文件为node来使用。

不过再业务方面要设置的比较少,感觉再编写的过程中会比较轻松。

一些开源项目

使用类似 turboscript 的语言,你能够:

以类似typescript的方式来写脚本

将脚本编译成webassmblywasm文件

在程序中使用wasm文件

以及比较保守(有指针)的AssemblyScript。

wasm链接

一些链接:

<优>理解 WebAssembly JS

<优>了解 WebAssembly 的基礎使用方法

Vue 优化异步执行更新

Vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会一次推入到队列中。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际(已去重的)工作。

reder细节 render不要使用箭头函数

箭头函数会绑定上下文

button的disabled属性属于domPorps而不是attr
//
...
h("button",{domProps: true});
...
?组件命名 原则

简短。

需要被引用。

达意。

语义

可理解

约定

建议

基本类型。

结构组件

<工程名首字母>+<结构层级+>

维持在两个完整单词的长度

如果缩写重复则添加多一个字母达到区别的作用

e.g

在工程 utatemita

u-home

u-hold

u-home-body

u-hm-body-title

u-hm-body-content

u-hold-companys

u-hd-companys-company

工程公用组件

<工程名>+<功能>+[描述]

e.g

在工程 utatemita

utatemita-Square_card

utatemita-Lift

普遍公用组件

<作者名>+<功能>+[描述]

使用驼峰式命名方式。

React UI组件

draft.js -markdown editor

判断子组件的类型

https://discuss.reactjs.org/t...

Gulp gulp.src & gulp.dest

输入的文件与输出的文件强制同名

gulp.src 在管道内将会输出

默认buffer

可选file.content

{ buffer: false }

buffer <-> string

buffer.toString()

Buffer.from(str)

Phantomjs 中文教程 性能问题 如何不重复启动phantomjs进程

来源:https://segmentfault.com/q/10...

只要不执行phantom.exit();进程就不会退出

phantoms启动后,启动它的父进程就无法和其沟通了,phantomjs没有相应地API可以做到这一点

如果需要动态的读取数据以抓取数据有2种方法供参考

A. 利用ChildProcess模块,反向处理,即启动phantomjs进程,然后利用child process模块启动java进程,通过子父进程之间共享的stdin/stdout来交互数据

B. 利用WebServer模块,在phantomjs中启动一个微型web服务,java进程往这个web服务发送数据及接受处理完成的结果

如何局部读取页面

来源:https://www.urlteam.org/2016/...

page.settings Object
对于当前页面的一些配置项。此API必须在 page.open()调用之前设置,否则不会起作用。以下是配置项:

javascriptEnabled 默认 true:是否执行页面内的javascript

javascriptloadImages 默认 true:是否载入图片

截取图片的Tips

各种各样的userAgent一览

设置page.settings.userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"

因为phantomjs模拟的是浏览器,因此加载、渲染页面需要一定的时间因此在page.open()之后,应该delay一定时间之后方开始截图。

屏幕长宽设置的讨论

phantomjspage.viewportSize设置失败

Meteor helper for the tutiral

meteor react-controlled-components problem

https://github.com/meteor/sim...

api

Meteor.publish -> 发布数据

Meteor.subscribe -> 订阅数据

(autopublish使的整个mongo数据库将推到 客户端)

Meteor.methods -> 验证、修改数据方法

Meteor.call -> 启动方法

(inseure使得能够在 客户端 进行mongo操作)

Json

获得json文件

UI

Template.body( using on Blade)

onCreated

创建本地的关联数据库

订阅服务器的数据

UI组件

semantic

Mongo

The mongo method runing in the meteor do things synchronously.

what collection2 doing

it will convert string to number

Publish

Don"t use ()=>{} in the publishion

document struct

imports

meteor项目中除了imports文件之外的其他文件,将会在meteor服务器启动时自动加载。

imports文件中的文件则需要通过import,才会引入到项目中。

using React get data from the servers"s collection
//......
// warpper
import { createContainer } from "meteor/react-meteor-data";
// collections
import { Collection } from "../api/collection.js";
//......
//.. define the react component "App" receive `props.tasks`
//.. setting propTypes of "App"  
//......
// warp the "App"
export default createContainer(() => {
  // the object will pipe to App as its props
  return {
    tasks: Collection.find({}).fetch(),
  };
}, App);
ThingsDoing

node爬虫框架。

日文歌词网

处理抓取的数据

继续完成页面

博客

3DRPGMaker

KaKaxi

myAwosome

前端库awosome网

https://news.awesomes.cn/

https://www.awesomes.cn/

https://lanmaowz.com/simple-n...

JSON数据生成网站

http://beta.json-generator.co...

npms趋势

https://npms.io/

瞩目的nodejs框架

https://eggjs.org/

2016年上升趋势https://www.v2ex.com/t/351191

博客

有趣的js库系列 https://tutorialzine.com/@danny/

npm库排名

https://www.npmjs.com/browse/...

node -> pkg https://www.awesomes.cn/repo/...

非常喜欢的网页设计

https://fir.im/

https://www.mgenware.com/blog...

https://thief.one/2017/03/31/...

https://www.typeisbeautiful.c...

会动的ico图标

https://icons8.com/c/animated...

模拟打字

https://codepen.io/Zhouzi/ful...

node CLI

https://www.npmjs.com/package...

https://github.com/vadimdemed...

现代拓展常用实用库

http://underscorejs.org/

https://lodash.com/

编辑器

https://www.awesomes.cn/repo/...

使用提示

https://github.com/usablica/i...

视差

http://matthew.wagerfield.com...

数据可视化

https://d3js.org/

匿名网络以及其他

https://prism-break.org/zh-CN/all/

Autismi / Inventati

如果你的项目非常需要隐私,并且非常有价值,通过他们的认可,他们可以为你提供一系列免费的安全的隐私的服务。

装逼利器

https://codepen.io/VincentGar...

合集

http://tech.it168.com/a2015/0...

好文章

关于惰性计算 http://justjavac.com/javascri...

ASICII字符画

http://www.network-science.de...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80878.html

相关文章

  • RDDPYTHON背包

    摘要:大蟒蛇年荷兰人解释型语言同声传译比较灵活设计哲学优雅明确简单易学易用可读性高开发哲学用一种方法,最好是只用一种方法来做一件事现代编程语言面向对象支持泛型设计支持函数式编程丰富的数据结构和第三方函数库功能强大简单爬虫架构基本的器件爬虫调度端爬 pythoon(大蟒蛇) 1989年Guido van Rossum(荷兰人) 解释型语言 BASIC、Python showImg(http:...

    李增田 评论0 收藏0
  • RDD前端背包

    摘要:中文最小字体问题添加属性以取消浏览器的自动调整会使原本应该调整的地方失效原本就是专为了移动端设置的属性,桌面端不适应已修复建议通过缩小来获得小字体。 暂时先堆在一起,等某条目里面的内容超过十条了,就单列出去。 更新历史: 17.7.24 =ADD= typescript —> interface =ADD= alof awsome net 17.7.23 =ADD=...

    Pandaaa 评论0 收藏0
  • RDD前端背包

    摘要:中文最小字体问题添加属性以取消浏览器的自动调整会使原本应该调整的地方失效原本就是专为了移动端设置的属性,桌面端不适应已修复建议通过缩小来获得小字体。 暂时先堆在一起,等某条目里面的内容超过十条了,就单列出去。 更新历史: 17.7.24 =ADD= typescript —> interface =ADD= alof awsome net 17.7.23 =ADD=...

    jifei 评论0 收藏0
  • 算法动态规划代码优化详解(经典背包问题)

    摘要:首先说下算法对于前端的作用和应用作用不用说了提高效率和性能应用目前也是买了算法导论这本书,看得头晕,各种数学知识需要返回去重新认识,哎,终于知道了以前学的东西总有用的。。。 首先说下算法对于前端的作用和应用 作用:不用说了提高效率和性能 应用:目前也是买了算法导论这本书,看得头晕,各种数学知识需要返回去重新认识,哎,终于知道了以前学的东西总有用的。。。,自己买的哭着也要读完,不扯了,直...

    CntChen 评论0 收藏0
  • 算法动态规划代码优化详解(经典背包问题)

    摘要:首先说下算法对于前端的作用和应用作用不用说了提高效率和性能应用目前也是买了算法导论这本书,看得头晕,各种数学知识需要返回去重新认识,哎,终于知道了以前学的东西总有用的。。。 首先说下算法对于前端的作用和应用 作用:不用说了提高效率和性能 应用:目前也是买了算法导论这本书,看得头晕,各种数学知识需要返回去重新认识,哎,终于知道了以前学的东西总有用的。。。,自己买的哭着也要读完,不扯了,直...

    oysun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<