30+ 個工作中常用到的前端小知識(乾貨)

2022-01-30 前端速報
1. JS為什麼單線程

一個簡單的原因就是,js在設計之初只是進行一些簡單的表單校驗,這完全不需要多線程,單線程完全可以勝任這項工作。即便後來前端發展迅速,承載的能力越來越多,也沒有發展到非多線程不可的程度。

而且還有一個主要的原因,設想一下,如果js是多線程的,在運行時多個線程同時對DOM元素進行操作,那具體以哪個線程為主就是個問題了,線程的調度問題是一個比較複雜的問題。

HTML5新的標準中允許使用new Worker的方式來開啟一個新的線程,去運行一段單獨的js文件腳本,但是在這個新線程中嚴格的要求了可以使用的功能,比如說他只能使用ECMAScript, 不能訪問DOM和BOM。這也就限制死了多個線程同時操作DOM元素的可能。

2.使用css寫出一個三角形角標

元素寬高設置為0,通過border屬性來設置,讓其它三個方向的border顏色為透明或者和背景色保持一致,剩餘一條border的顏色設置為需要的顏色。

div {
    width: 0;
    height: 0;
    border: 5px solid #transparent;
    border-top-color: red;
}

3.水平垂直居中

我一般只使用兩種方式定位或者flex,我覺得夠用了。

div {
    width: 100px;
    height: 100px;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
}

父級控制子集居中

.parent {
    display: flex;
    justify-content: center;
    align-items: center;
}

4. css一行文本超出...

overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;

5.多行文本超出顯示...

display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;

6.IOS手機容器滾動條滑動不流暢

overflow: auto;
-webkit-overflow-scrolling: touch;

7.修改滾動條樣式

隱藏div元素的滾動條

div::-webkit-scrollbar {
    display: none;
}

div::-webkit-scrollbar 滾動條整體部分

div::-webkit-scrollbar-thumb 滾動條裡面的小方塊,能向上向下移動(或往左往右移動,取決於是垂直滾動條還是水平滾動條)

div::-webkit-scrollbar-track 滾動條的軌道

div::-webkit-scrollbar-button 滾動條的軌道的兩端按鈕,允許通過點擊微調小方塊的位置。

div::-webkit-scrollbar-track-piece 內層軌道,滾動條中間部分

div::-webkit-scrollbar-corner 邊角,即兩個滾動條的交匯處

div::-webkit-resizer 兩個滾動條的交匯處上用於通過拖動調整元素大小的小控制項

注意此方案有兼容性問題,一般需要隱藏滾動條時我都是用一個色塊通過定位蓋上去,或者將子級元素調大,父級元素使用overflow-hidden截掉滾動條部分。暴力且直接。

8.解決ios audio無法自動播放、循環播放的問題

ios手機在使用audio或者video播放的時候,個別機型無法實現自動播放,可使用下面的代碼hack。

// 解決ios audio無法自動播放、循環播放的問題
var music = document.getElementById('video');
var state = 0;

document.addEventListener('touchstart', function(){
    if(state==0){
        music.play();
        state=1;
    }
}, false);

document.addEventListener("WeixinJSBridgeReady", function () {
    music.play();
}, false);

//循環播放
music.onended = function () {
    music.load();
    music.play();
}

9.隱藏頁面元素

display-none: 元素不會佔用空間,在頁面中不顯示,子元素也不會顯示。

opacity-0: 元素透明度將為0,但元素仍然存在,綁定的事件仍舊有效仍可觸發執行。

visibility-hidden:元素隱藏,但元素仍舊存在,佔用空間,頁面中無法觸發該元素的事件。

10.前端工程化

一提到前端工程化很多人想到的都是webpack,這是不對的,webpack僅僅是前端工程化中的一環。在整個工程化過程中他幫我們解決了絕大多數的問題,但並沒有解決所有問題。

前端工程化是通過工具提升效率,降低成本的一種手段。

近些年被廣泛的關注和探討,究其原因主要是因為現代化前端應用功能要求不斷提高,業務邏輯日益複雜,作為當下網際網路時代唯一不可或缺的技術,前端可以說是佔據了整個開發行業的半壁江山。從傳統的網站,到現在的H5,移動App,桌面應用,以及小程序。前端技術幾乎是無所不能的全面覆蓋。

在這些表象的背後呢,實際上是行業對開發人員的要求發生了天翻地覆的變化,以往前端寫demo,套模板,調頁面這種刀耕火種的方式已經完全不符合當下對開發效率的要求,前端工程化就是在這樣一個背景下被提上檯面,成為前端工程師必備的手段之一。

一般來說前端工程包含,項目初始化,項目開發,提交,構建,部署,測試,監控等流程。工程化就是以工程的角度來解決這些問題。比如項目初始化我們一般使用npm init, 創建頁面模板使用plop,我們喜歡使用ES6+開發,但是需要通過babel編碼成ES5,持續集成的時候我們使用git/ci cd,但是為了保持開發規範我們引入了ESLint,部署一般使用git/cd或者jenkins等等。

11.contenteditable

html中大部分標籤都是不可以編輯的,但是添加了contenteditable屬性之後,標籤會變成可編輯狀態。

<div contenteditable="true"></div>

不過通過這個屬性把標籤變為可編輯狀態後只有input事件,沒有change事件。也不能像表單一樣通過maxlength控制最大長度。我也忘記我在什麼情況下用到過了,後面想起來再補吧。

12.calc

這是一個css屬性,我一般稱之為css表達式。可以計算css的值。最有趣的是他可以計算不同單位的差值。很好用的一個功能,缺點是不容易閱讀。接盤俠沒辦法一眼看出20px是啥。

div {
    width: calc(25% - 20px);
}

13.Date對象

獲取當前時間毫秒值

// 方式一
Date.now(); // 1606381881650
// 方式二
new Date() - 0; // 1606381881650
// 方式三
new Date().getTime() // 1606381881650

創建Date對象的兼容性問題。

// window和安卓支持,ios和mac不支持
new Date('2020-11-26'); 
// window和安卓支持,ios和mac支持
new Date('2020/11/26');

14.Proxy和Object.defineProperty區別

Proxy的意思是代理,我一般叫他攔截器,可以攔截對象上的一個操作。用法如下,通過new的方式創建對象,第一個參數是被攔截的對象,第二個參數是對象操作的描述。實例化後返回一個新的對象,當我們對這個新的對象進行操作時就會調用我們描述中對應的方法。

new Proxy(target, {
    get(target, property) {

    },
    set(target, property) {

    },
    deleteProperty(target, property) {

    }
})

Proxy區別於Object.definedProperty。

Object.defineProperty只能監聽到屬性的讀寫,而Proxy除讀寫外還可以監聽屬性的刪除,方法的調用等。

通常情況下我們想要監視數組的變化,基本要依靠重寫數組方法的方式實現,這也是Vue的實現方式,而Proxy可以直接監視數組的變化。

const list = [1, 2, 3];
const listproxy = new Proxy(list, {
    set(target, property, value) {
        target[property] = value;
        return true; // 標識設置成功
    }
});

list.push(4);

Proxy是以非入侵的方式監管了對象的讀寫,而defineProperty需要按特定的方式定義對象的屬性。

15.Reflect

他是ES2015新增的對象,純靜態對象也就是不能被實例畫,只能通過靜態方法的方式調用,和Math對象類似,只能類似Math.random()的方式調用。

Reflect內部封裝了一系列對對象的底層操作,一共14個,其中1個被廢棄,還剩下13個。

Reflect的靜態方法和Proxy描述中的方法完全一致。也就是說Reflect成員方法就是Proxy處理對象的默認實現。

Proxy對象默認的方法就是調用了Reflect內部的處理邏輯,也就是如果我們調用get方法,那麼在內部,Reflect就是將get原封不動的交給了Reflect,如下。

const proxy = new Proxy(obj, {
    get(target, property) {
        return Reflect.get(target, property);
    }
})

Reflect和Proxy沒有絕對的關係,我們一般將他們兩個放在一起講是為了方便對二者的理解。

那為什麼會有Reflect對象呢,其實他最大的用處就是提供了一套統一操作Object的API。

判斷對象是否存在某一個屬性,可以使用in操作符,但是不夠優雅,還可以使用Reflect.has(obj, name); 刪除一個屬性可以使用delete,也可以使用Reflect.deleteProperty(obj, name); 獲取所有屬性名可以使用Object.keys, 也可以使用Reflect.ownKeys(obj); 我們更推薦使用Reflect的API來操作對象,因為他才是未來。

16.解析get參數

通過replace方法獲取url中的參數鍵值對,可以快速解析get參數。

const q = {};
location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);
console.log(q); 

17.解析連接url

可以通過創建a標籤,給a標籤賦值href屬性的方式,獲取到協議,pathname,origin等location對象上的屬性。

// 創建a標籤
const aEle = document.createElement('a');
// 給a標籤賦值href路徑
aEle.href = '/test.html';
// 訪問aEle中的屬性
aEle.protocol; // 獲取協議
aEle.pathname; // 獲取path
aEle.origin;
aEle.host;
aEle.search;
...

18.localStorage

localStorage是H5提供的永久存儲空間,一般最大可存儲5M數據,並且支持跨域隔離,他的出現極大提高了前端開發的可能性。localStorage的使用很多人都知道setItem,getItem,removeItem, 但他也可以直接以成員的方式操作。

// 存儲
localStorage.name = 'yd';
// 獲取
localStorage.name; // yd
// 刪除
delete localStorage.name;
// 清除全部
localStorage.clear();

// 遍歷
for (let i = 0; i < localStorage.length; i++) {
    const key = localStorage.key(i); // 獲取本地存儲的Key
    localStorage[key]; // 獲取本地存儲的value
}

localStorage滿了的情況下仍繼續存儲並不會覆蓋其他的值,而是直接報錯(QuotaExceededError),並且當前存儲的值也會被清空。瀏覽器支持每個域名下存儲5M數據。

19.sessionStorage

sessionStorage和localStorage的區別是,存在當前會話,很多人理解的是瀏覽器關閉,這是不對的,假設你在A頁面存儲了sessionStorage,新開選項卡將A頁面的連結粘貼進去打開頁面,sessionStorage也是不存在的。

所以sessionStorage存在的條件是頁面間的跳轉,A頁面存儲了sessionStorage,他要通過超連結或者location.href或者window.open來打開另一個同域頁面才能訪問sessionStorage。

這一點在混合開發嵌套H5的開發模式中尤為重要,如果以新開webview的方式打開頁面,很可能sessionStorage就沒有了。

20.會話cookie

cookie在設置的時候如果不設置過期時間,就表示是個會話cookie,以前我以為關閉瀏覽器會話cookie就消失了,然而...喜提bug一個。

在多數情況下windows系統或者安卓系統確實是這樣的。但是在macOS系統或者ios系統中,關閉瀏覽器並不會清除掉會話cookie,結束瀏覽器進程才行。

21.標籤模板字符串

模板字符串支持在前面添加一個函數,第一個參數是一個有固定內容組成的數組,後面參數依次為傳入的變量,函數返回值為模板字符串真正展示的值。不過這個功能個人感覺沒啥用。

const tag = (params, ...args) => {
    return params[0] + args[0]; // 返回值為模板字符串的真實值。
}

const str = tag`hello ${'world'}`;

22.字符串常用的幾個方法1. includes();

字符串中是否包含某個字符串,這個不說了,其實就是indexOf的替代方案,用起來更優雅,

2. startsWith();

字符串是否為某個字符串開始,我一般用它判斷url是否有http

3. endsWith();

字符串是否為某個字符串結尾。判斷後綴名的時候尤其有效。

4. repeat(number);

得到一個重複number次的字符串。額...我也不知道什麼時候有用,一般我用它造測試數據。

5. 'abc'.padEnd(5, '1'); // abc11;

用給定的字符串在尾部拼接到指定長度,第一個參數為長度,第二個參數為用於拼接的值。

6. 'abc'.padStart(5, '1'); // 11abc;

用給定的字符串在首部拼接到指定長度第一個參數為長度,第二個參數為用於拼接的值。首部補0?

23.數組快速去重

應該很多人都知道這個,數組轉換成Set, 再轉換為數組,不過這種去重方式只能去除基本數據類型組成的數組。

const arr = [1, 2, 3, 4, 5, 6];

const arr2 = new Set(arr);

const arr3 = [...arr2];

24.Object.keys, values, entries

一般我們常用Object.keys,返回一個對象的鍵組成的數組,其實還有Object.values,返回對象值組成的數組,Object.entries將對象轉成數組,每個元素是鍵值對組成的數組,可以使用此功能快速將對象轉為Map。


const obj = {name: 'yd', age: 18};

Object.keys(obj); // ['name', 'age'];

Object.values(obj); // ['yd', 18];

const l = Object.entries(obj); // [['name', 'yd'], ['age': 18]];

const m = new Map(l);

25.Object.getOwnPropertyDescriptors

獲取對象的描述信息

Object.assign複製時,將對象的屬性和方法當做普通屬性來複製,並不會複製完整的描述信息,比如this。

const p1 = {
    a: 'y',
    b: 'd',
    get name() {
        return `${this.a} ${this.b}`;
    }
}
const p2 = Object.assign({}, p1);

p2.a = 'z';

p2.name; // y d; 發現並沒有修改p2.a的值,是因為this仍舊指向p1

使用Object.getOwnPropertyDescriptors獲取完整描述信息

const description = Object.getOwnPropertyDescriptors(p1);

const p2 = Object.defineProperty({}, description);

p2.a = 'z';

p2.name; // z d

26.BigInt

JavaScript可以處理的最大數字是2的53次方 - 1,這一點我們可以在Number.MAX_SAFE_INTEGER中看到。

consoel.log(Number.MAX_SAFE_INTEGER); //9007199254740991

更大的數字則無法處理,ECMAScript2020引入BigInt數據類型來解決這個問題。通過把字母n放在末尾, 可以運算大數據。

BigInt可以使用算數運算符進行加、減、乘、除、餘數及冪等運算。它可以由數字和十六進位或二進位字符串構造。此外它還支持AND、OR、NOT和XOR之類的按位運算。唯一無效的位運算是零填充右移運算符。

const bigNum = 100000000000000000000000000000n;
console.log(bigNum * 2n); // 200000000000000000000000000000n

const bigInt = BigInt(1);
console.log(bigInt); // 1n;

const bigInt2 = BigInt('2222222222222222222');
console.log(bigInt2); // 2222222222222222222n;

BigInt是一個大整數,所以他不能用來存儲小數。

27.??合併空運算符

假設變量a不存在,我們希望給系統一個默認值,一般我們會使用||運算符。但是在javascript中空字符串,0,false都會執行||運算符,所以ECMAScript2020引入合併空運算符解決該問題,只允許在值為null或未定義時使用默認值。

const name = '';

console.log(name || 'yd'); // yd;
console.log(name ?? 'yd'); // '';

28.?可選鏈運算符

業務代碼中經常會遇到這樣的情況,a對象有個屬性b,b也是一個對象有個屬性c,

我們需要訪問c,經常會寫成a.b.c,但是如果f不存在時,就會出錯。

const a = {
    b: {
        c: 123,
    }
}
console.log(a.b.c); // 123;
console.log(a.f.c); // f不存在所以會報錯

ECMAScript2020定義可選鏈運算符解決該問題,通過在.之前添加一個?將鍵名變成可選

let person = {};
console.log(person?.profile?.age ?? 18); // 18

29.import

import是ECMAScript2015當中定義的一套ES Module模塊系統,語法特性絕大多數瀏覽器已經支持了,通過給script標籤添加type=module的屬性就可以使用ES Module的標準去執行javascript代碼了。

<script type="module">
console.log('this is es module');
</script>

在ES Module規範下,會採用嚴格模式(use strict)運行javascript代碼。每個ES Module都運行在單獨的作用域中,也就意味著變量間不會互相干擾。外部js文件是通過CORS的方式請求的,所以要求我們外部的js文件地址要支持跨域請求,也就是文件伺服器要支持CORS。我們可以在任意網站控制臺輸入下面代碼。

const script = document.createElement('script');

script.type = 'module';

script.innerHTML = `import React from 'https://cdn.bootcdn.net/ajax/libs/react/17.0.1/cjs/react-jsx-dev-runtime.development.js';`;

document.body.append(script);

可以發現在network中請求了https://cdn.bootcdn.net/ajax/libs/react/17.0.1/cjs/react-jsx-dev-runtime.development.js資源。

ES Module的script標籤會延遲腳本加載,等待網頁請求完資源之後才執行,和使用deffer的方式加載資源相同。

需要注意的是,import {} from 'xx'導入模塊的時候,並不是對象的解構,而是import的固定語法,這一點很多人容易弄錯。

並且ECMAScript2020中import開始支持動態導入功能,在此之前import只能寫在模塊代碼的頂部,一開始就要聲明模塊依賴的其它模塊。支持動態引入後就可以按需引入對應的模塊,這個功能我們早在SPA中就已經用到了。動態導入返回的是一個Promise。

a.js

const a = 123;
export { a };

b.js


import('./a.js').then(data => {
    console.log(data.a); // 123;
})

30. 0.1 + 0.2 === 0.3 // false

console.log(0.1+0.2); // 0.30000000000000004

在JS當中,Number類型實際上是double類型,運算小數時存在精度問題。因為計算機只認識二進位,在進行運算時,需要將其他進位的數值轉換成二進位,然後再進行計算

小數用二進位表達時是無窮的。

// 將0.1轉換成二進位
console.log(0.1.toString(2)); // 0.0001100110011001100110011001100110011001100110011001101

// 將0.2轉換成二進位
console.log(0.2.toString(2));  // 0.001100110011001100110011001100110011001100110011001101

雙精度浮點數的小數部分最多支持53位二進位位,所以兩者相加後,因浮點數小數位的限制而截斷的二進位數字,再轉換為十進位,就成了0.30000000000000004,這樣在進行算術計算時會產生誤差。

ES6 在Number對象上面,新增一個極小的常量Number.EPSILON。根據規格,它表示1與大於1的最小浮點數之間的差。對於64位浮點數來說,大於1的最小浮點數相當於二進位的1.00..001,小數點後面有連續51個零。這個值減去1之後,就等於2的-52次方。

Number.EPSILON === Math.pow(2, -52)
// true
Number.EPSILON
// 2.220446049250313e-16
Number.EPSILON.toFixed(20)
// "0.00000000000000022204"

Number.EPSILON實際上是JavaScript能夠表示的最小精度。誤差如果小於這個值,就可以認為已經沒有意義了,即不存在誤差了。

引入一個這麼小的量的目的,在於為浮點數計算,設置一個誤差範圍。我們知道浮點數計算是不精確的。

Number.EPSILON可以用來設置能夠接受的誤差範圍。比如,誤差範圍設為2的-50次方(即Number.EPSILON * Math.pow(2, 2)),即如果兩個浮點數的差小於這個值,我們就認為這兩個浮點數相等。

(0.1 + 0.2 - 0.3) < Number.EPSILON // true

作者:隱冬

https://juejin.cn/post/6908698827033837575

相關焦點

  • Web前端設計秘籍——30個工作中常用的CSS樣式
    而由於樣式效果非常多,在工作中並非所有的樣式都會用到,因此經常可能遇到某些特定樣式會突然想不起來的情況,更何況對於初學者來說遇到這種情況。接下來就跟著小凡一起整理一下這些常用而易忘的css樣式。中劃線是英語複合詞有連接2個單詞的意思,但前後是2個獨立單詞。
  • 你會用到的 15個前端小知識
    關注「Java有道」,星標或置頂,更多乾貨等你發現
  • 前端乾貨分享:bootstrap知識總結
    Bootstrap框架一、Bootstrap簡介Bootstrap是一個用於快速開發Web應用程式和網站的前端框架。Bootstrap是基於HTML、CSS、JavaScript的。(4)**內置 jQuery:**插件Bootstrap提供了很多實用性的jquery插件,這些插件方便開發者實現Web中各種常規特效。(5)**支持 HTML5、CSS3:**HTML5語義化標籤和CSS3屬性,都得到很好的支持。
  • 從後端開發轉職前端開發,我學到了什麼?
    在後端工作時,我無法想像如何與用戶互動、如何改進用戶流程,因為我幾乎只關心CRUD(資料庫的增刪改查)操作以及app如何將數據存儲到資料庫,包括最重要和最敏感的信息,比如公式、信用卡信息,等等。因此,當我做UI相關工作時,真的糟透了。轉職到前端後就大不一樣了。
  • 寫給設計師的前端小知識之網頁排版
    這一章不僅教大家網頁排版的基礎知識,還以百度藝術百科的網頁為例,帶大家簡單做一遍,學得會更快,來收!閱讀須知:工具不重要,工具不重要,工具不重要……OK?有人說DW早就淘汰了,我造啊,然後呢?我還打算用小紅本(editPlus)講呢,哈哈哈哈……希望乃們接受我這種循序漸進的過程。
  • 為什麼前端是最適合設計師學習的編程技能「設計師的100個前端問題-001」
    這期分享是《設計師想知道的100個前端問題》系列內容的第一期,這個系列內容是為了讓更多設計師小夥伴或者是其他想學習前端的小夥伴快速了解前端是什麼,怎麼學,學什麼,還有就是哪怕就算你不想學習前端,也需要去了解的一些在設計工作中常會碰到的一些前端或者開發技術相關的知識,我會用儘量通俗易懂的方式讓你聽明白所有這些內容
  • 工作中常用的8個IF函數,組成17個Excel公式,夠你用了 - Excel與財務
    在Excel表格中判斷數據最常用的就是IF函數了,今天小編要講的IF函數,是IF的系列函數,共有8個,也在工作中經常用到,每個函數小編再以實例列舉2-3個公式,下次工作中用到可以直接套用了。E,3,0),"")三、CountIF函數【用途】:根據指定條件統計個數公式6:統計表格中財務部有多少名員工
  • 前端開發從入門到精通:gulp入門知識詳解
    我們經常把一整套前端工作流程中能用工具搞定的部分用工具搞定,也就是將前端開發流程、技術、工具、經驗等規範化、標準化。常見的前端工程自動化工具:Grunt、Gulp,Webpack等,接下來千鋒廣州HTML5前端培訓老師就給大家簡單介紹一下Gulp。
  • CSS3實現5個常用的網頁動畫效果
    點擊上方「前端開發博客」,選擇「星標」每天前端開發乾貨第一時間送達!
  • web前端線上培訓 - CSDN
    JavaScript先根據《JavaScript權威指南》 這本書上的例子敲一遍,先看看效果是什麼,就是一行行一行的敲例子,JavaScript是前端的難點也是核心,所以不可以不重視,當你意識到JavaScript的神奇,興趣大增,那麼你學習的勁頭就會非常大,很多人學習失敗,其實就是沒有進入學習的狀態。
  • 財會人員工作效率提升,這些Excel小技巧太重要!
    乾貨時間! 為了每天的財會人員能夠早早下班,高頓CPA小編竟然吐血整理了這一批Excel乾貨,都有哪些呢? 乾貨知識一:如何快速選擇工作表 想必大家在工作的時候都會遇到那麼些比較複雜的工作簿,裡面有非常多的工作表,甚至都溢出屏幕範圍了。
  • Web前端是什麼意思?朗沃Web前端包含哪些內容
    總所周知,Web前端是現在很火的行業,找工作的人也多,招聘的公司也多,工作環境也好,可是這麼火熱的行業還有有人不知道「Web前端是什麼意思」,具體要做什麼?Web前端是什麼意思?朗沃Web前端包含哪那朗沃教育的小編再來說一下,和大家囉嗦幾句「Web前端是什麼意思」,具體能做什麼?
  • 讓你見識一下什麼叫最完整、最系統的前端學習路線
    那麼話不多說,直接上乾貨,希望能幫助到大家。 前端開發受歡迎程度: 2018年,JetBrains 發起了其標準的年度調查項目,開發人員生態系統調查 (The Developer Ecosystem 2018)。該項調查不僅揭示了不同程式語言的流行趨勢,並且從開發人員的角度反映了他們的個人偏好。
  • 推薦26個好玩又有挑戰的開源前端項目(涵蓋初中高階)
    這些都是css裡面十分重要的知識點,當我們學習完css基礎之後,可以利用此項目來製作一些常用的特效,也可以鞏固基礎知識。Bootstrap是可以直接應用到我們平常的項目裡的,而且非常方便、功能特別多,也是我們常用的前端UI框架。
  • 五年前端大專學歷進騰訊啦!
    https://zhuanlan.zhihu.com/p/223459952從我開始做前端的時候,我就發誓我必須要進BAT,作為一個只是普通大專畢業的我,也沒有大廠的工作背景,其實對於30歲甚至35歲之後的發展,個人感覺是很受限制的,所以進入BAT是我一開始的目標,可能這就是曲線救國吧。
  • 騰訊高級架構師:創業公司如何從100份簡歷中招聘1個程式設計師 | 獵雲網
    其實,每個創業公司的奮鬥過程,都不容易,我們想把在這個過程中的探索進行總結分享,但願對更多的創業團隊有幫助。這篇文章,就是梅沙科技在創辦4個月以來的開發團隊招聘實錄。在團隊組建過程中,產品經理的招聘,相對順利。
  • 悼念前端大牛司徒正美
    他很年輕,28日才發過朋友圈,前陣子我們一起聊他的新工作,最近才和他確認過稿費。,著有《JavaScript框架設計》一書,前去哪兒網前端架構師,現OPPO快應用負責人。愛好開源,是mass、Avalon、nanachi等前端框架的作者。
  • Web前端零基礎之常用標籤
    點擊上方「web前端網頁設計」一鍵關注,更多網頁設計 UI設計 Html div css HTML5+CSS3、JavaScript、JQuery
  • 30CrMnSiA合金結構用鋼板常用知識匯總
    30CrMnSiA合金結構用鋼板常用知識匯總   山東山化總建工程材料有限公司主要經營30CrMnSiA合金結構用鋼板,電力化工建設材料、電力機組設備及配套管道材料等。如有需要,歡迎新老客戶前來選購!
  • 工作中常用的5個Excel計數函數!
    統計計數經常出現我們日常工作中,如果使用傳統的手工統計,那是相當費時費力,而且還得不到老闆的賞識,充分利用Excel功能,可使統計工作得心應手,輕鬆完成,一會小心還會得到獎金喲!今天小編和大家分享5個常用的計數函數是如何應用到工作中。