TSLint配置規(guī)則(部分)

TSLint配置規(guī)則(部分)


參照 https://palantir.github.io/tslint/rules/

檢索key為配置項(xiàng)的key。

以下配置均配置在tslint.json中静秆。

部分配置項(xiàng)目可能不全,具體參考官網(wǎng)。


TypeScript-specific(ts特有)

  • 配置禁用 @ts-ignore 注釋?zhuān)渲檬纠?/strong>
"ban-ts-ignore": true  

在這種情況下壳鹤,以下無(wú)效的代碼會(huì)報(bào)警告而無(wú)法忽略:

if (false) {
    // @ts-ignore: Unreachable code error
    console.log("hello");
}

  • 配置訪(fǎng)問(wèn)權(quán)限堵漱,配置示例:
"member-access": true
"member-access": [true, "no-public"]
"member-access": [true, "check-accessor"]

設(shè)置為no-public或者true禁止指定參數(shù)的訪(fǎng)問(wèn)權(quán)限為public;

設(shè)置為check-accessor強(qiáng)制性轉(zhuǎn)換get和set的方法為public權(quán)限; 更多配置參見(jiàn)官網(wǎng)祷愉。


  • 配置屬性以及方法的code順序,配置示例:
“member-ordering": fields-first
“member-ordering": instance-sandwich
“member-ordering": statics-first

一般選用fields-first,這種情況下的排序規(guī)則是:

* 屬性在構(gòu)造方法之前,構(gòu)造方法在方法之前
* 靜態(tài)成員在實(shí)例成員之前
* public成員在protect成員之前湖雹,protect成員在private成員之前

其他兩種排序參考官網(wǎng)咏闪。


  • 配置禁用any類(lèi)型修飾符,配置示例:
"no-any": true
"no-any": [true,{"ignore-rest-args": true}]

一般使用第二個(gè)配置,這種情況下摔吏,作為多參數(shù)傳入的數(shù)組參數(shù)將不會(huì)被限制使用any鸽嫂。

例如以下的寫(xiě)法將會(huì)通過(guò)檢查:

function foo(a: number, ...rest: any[]): void {
    return;
}

  • 配置禁用空接口,配置示例:
"no-empty-interface": true 

  • 配置禁用for ... in 語(yǔ)句
"no-for-in": true

for…in語(yǔ)句是舊式JavaScript語(yǔ)法征讲,通常需要在其循環(huán)體內(nèi)進(jìn)行詳細(xì)的hasOwnProperty檢查据某。 這些語(yǔ)句可以完全用現(xiàn)代JS&TS中的for…of語(yǔ)句代替。


  • 配置防止import語(yǔ)句引入具有副作用的依賴(lài)诗箍,配置示例:
"no-import-side-effect": true
"no-import-side-effect": [true, {"ignore-module": "(\\.html|\\.css)$"}]

一般使用第一種即可癣籽。


  • 配置禁止顯示聲明string、boolean滤祖、number型的變量筷狼,配置示例:
"no-inferrable-types": true
"no-inferrable-types": [true, "ignore-params"]
"no-inferrable-types": [true, "ignore-params", "ignore-properties"]

由于編譯器可以很容易地推斷出這三種類(lèi)型,所以禁止這三種類(lèi)型的聲明匠童,減少代碼冗余埂材。

"ignore-params", "ignore-properties"表示忽略函數(shù)以及類(lèi)屬性的檢查。


  • 配置禁止內(nèi)部模塊俏让,配置示例:
"no-internal-module": true

使用模塊的概念可能會(huì)與外部模塊混淆楞遏,建議使用命名空間的概念(后續(xù)有類(lèi)似的配置)。


  • 配置禁止使用Magic Number,配置示例:
"no-magic-numbers": [true, 1, 2, 3]
"no-magic-numbers": [true, {"allowed-numbers": [1, 2, 3], "ignore-jsx": true}]

不允許在變量分配之外使用常量值首昔,默認(rèn)的情況下寡喝,-1,0和1將會(huì)是允許值。

強(qiáng)制常量值存儲(chǔ)在變量中將會(huì)提供更高的可讀性勒奇。


  • 配置禁用內(nèi)部模塊以及命名空間预鬓,配置示例:
"no-namespace": true

原因及理由同"no-internal-module"配置。此外赊颠,這項(xiàng)規(guī)則并不會(huì)禁止 declare module ... {}格二。剩余配置參照官網(wǎng)劈彪。


  • 配置禁用"!"后綴,配置示例:
"no-non-null-assertion": true

在嚴(yán)格模式下顶猜,coder應(yīng)該提前做好non-null check沧奴。(未定義的參數(shù)加上?也可防止空指針-> undefind?.do())

舉例,一般情況下(未配置這項(xiàng)規(guī)則):

function foo(instance: MyClass | undefined) {
    instance!.doWork();
}

假設(shè)instance存在长窄,這種情況下不會(huì)報(bào)錯(cuò)滔吠。編碼時(shí)應(yīng)該如下做好non-null check:

function foo(instance: MyClass | undefined) {
    if (instance !== undefined) {
        instance.doWork();
    }
}

  • 配置禁止重新分配參數(shù),配置示例:
"no-parameter-reassignment": true

  • 配置禁用require語(yǔ)句挠日,配置示例:
"no-var-requires": true

禁用類(lèi)似var module = require("module")的語(yǔ)句疮绷,只能在import語(yǔ)句中使用require

import foo = require('foo')


  • 配置禁用傳統(tǒng)的無(wú)箭頭函數(shù),配置示例:
"only-arrow-functions": true
"only-arrow-functions": [true, "allow-declarations", "allow-named-functions"]

一般采用第二項(xiàng)配置嚣潜。允許獨(dú)立的函數(shù)定義不使用箭頭函數(shù)冬骚。但是不允許function(){}形式

注意:如果函數(shù)體中有this指向,那么本項(xiàng)配置將會(huì)被忽略懂算。因?yàn)閭鹘y(tǒng)函數(shù)不會(huì)綁定this的作用域只冻,在函數(shù)中有this的情況下,會(huì)導(dǎo)致作用域不一致犯犁。


  • 配置使用for...of代替?zhèn)鹘y(tǒng)的for循環(huán)属愤,配置示例:
"prefer-for-of": true

如果循環(huán)的index沒(méi)有特殊用途,那么建議使用for..of酸役。


  • 配置函數(shù)以及屬性需要定義返回類(lèi)型及類(lèi)型住诸,配置示例:
"typedef": [true, "call-signature", "parameter", "member-variable-declaration"]

更多配置項(xiàng)參見(jiàn)官網(wǎng),一般上述配置即夠用涣澡。


  • 配置參數(shù)重載警告贱呐,配置示例:
"unified-signatures": true

Functionality(功能性)

  • 配置檢查異步函數(shù),配置示例:
"promise-function-async": true
"promise-function-async": [true, "check-function-declaration", "check-method-declaration"]

檢查函數(shù)類(lèi)型入桂,一般使用第一個(gè)默認(rèn)配置即可奄薇。


  • 配置異步調(diào)用檢查,配置示例:
"await-promise": true
"await-promise": [true, "Thenable"]

一般配置第一項(xiàng)即可抗愁。


  • 配置禁用逗號(hào)運(yùn)算符馁蒂,配置示例:
"ban-comma-operator": true

舉例:

let x = (y = 1, z = 2); // x is equal to 2 - this may not be immediately obvious.

上式x=2,這種寫(xiě)法語(yǔ)義不明確蜘腌。


  • 配置禁止省略花括號(hào)沫屡,配置示例:
"curly": true

if/for/do/while語(yǔ)句的花括號(hào)不可省略。


  • 配置使用if條件過(guò)濾for...in語(yǔ)句撮珠,配置示例:
"forin": true

防止在循環(huán)中迭代到原型中擁有的屬性沮脖。

舉例(someObject的prototype中也會(huì)擁有可觀(guān)的屬性數(shù)量):

for (let key in someObject) {
    if (someObject.hasOwnProperty(key)) {
        // code here
    }
}

  • 配置禁用內(nèi)置的Function構(gòu)造函數(shù),配置示例:
"function-constructor": true

直接使用Function構(gòu)造函數(shù)會(huì)導(dǎo)致設(shè)計(jì)上的問(wèn)題,同時(shí)會(huì)導(dǎo)致性能低下,如果需要?jiǎng)討B(tài)創(chuàng)建function,應(yīng)該使用工廠(chǎng)函數(shù)來(lái)返回function勺届。

以下寫(xiě)法將會(huì)警告:

let doesNothing = new Function();

應(yīng)該改為:

let doesNothing = () => {};

  • 配置只允許在合適的位置使用流程控制標(biāo)簽,配置示例:
"label-position": true

本項(xiàng)規(guī)則只會(huì)允許在流程控制中的標(biāo)簽驶俊。

頻繁使用流程控制標(biāo)簽會(huì)使代碼結(jié)構(gòu)性變差。


  • 配置禁用arguments.callee的寫(xiě)法免姿,配置示例:
"no-arg": true

具體原因參照https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee


  • 配置有異步標(biāo)簽的函數(shù)需要在返回值前加上await,配置示例:
"no-async-without-await": true

舉例,以下是正確的寫(xiě)法:

async function f() {
    await fetch();
}

const f = async () => {
    await fetch();
};

const f = async () => {
    return 'value';
};

  • 配置禁用位運(yùn)算符,配置示例:
"no-bitwise": true

禁用下列運(yùn)算符 &, &=, |, |=, ^, ^=, <<, <<=, >>, >>=, >>>, >>>=, ~ .

不會(huì)禁用&,|.


  • 配置禁止在流程控制中使用類(lèi)型分配,配置示例:
"no-conditional-assignment": true

舉例饼酿,不允許以下寫(xiě)法:

if (var1 = var2)

只能在流程控制中使用正常的類(lèi)型判斷:

if (var1 = var2)

  • 配置禁用指定的console函數(shù),配置示例:
"no-console": [true, "log", "error"]

生產(chǎn)環(huán)境中,console函數(shù)并不適用养泡。


  • 配置禁用String,Number,Boolean的構(gòu)造函數(shù),配置示例:
"no-construct": true

禁用類(lèi)似 new Number(foo)的寫(xiě)法嗜湃,但是不禁用Number(foo)的寫(xiě)法。


  • 配置禁用 debugger 語(yǔ)句,配置示例:
"no-debugger": true

debugger 語(yǔ)句不適用于生產(chǎn)環(huán)境澜掩。


  • 配置禁止在函數(shù)中出現(xiàn)兩次super(),配置示例:
"no-duplicate-super": true

第二次出現(xiàn)的super()會(huì)在運(yùn)行時(shí)失敗。


  • 配置禁止多重switch,配置示例:
"no-duplicate-switch-case": true

  • 配置禁止在同一代碼塊中兩次聲明同一個(gè)變量,配置示例:
"no-duplicate-variable": true
"no-duplicate-variable": [true, "check-parameters"]

一般使用第一項(xiàng)即可杖挣。

本項(xiàng)規(guī)則只會(huì)對(duì)var聲明起作用肩榕。


  • 配置禁用delete操作符,配置示例:
"no-dynamic-delete": true

盡量使用Map或者Set,來(lái)存儲(chǔ)惩妇,Object使用delete會(huì)偶爾引起不可預(yù)知的錯(cuò)誤(性能低下)株汉。


  • 配置禁止空代碼塊,配置示例:
"no-empty": true
"no-empty": [true, "allow-empty-catch"]
"no-empty": [true, "allow-empty-functions"]
"no-empty": [true, "allow-empty-catch", "allow-empty-functions"]

一般使用第一項(xiàng)配置即可,代碼塊中有注釋時(shí)并不會(huì)被認(rèn)為是空代碼塊歌殃。


  • 配置禁用eval函數(shù),配置示例:
"no-eval": true

  • 配置禁止出現(xiàn)未處理的Promise,配置示例:
"no-floating-promises": true
"no-floating-promises": [true, "JQueryPromise"]

一般使用第一項(xiàng)即可乔妈,第二項(xiàng)的參數(shù)指定了額外的處理項(xiàng)目。


  • 配置禁止使用for...in來(lái)迭代一個(gè)數(shù)組,配置示例:
"no-for-in-array": true

如果要遍歷索引,以下代碼可以參照:

array.forEach((value, index) => { … });
for (const [index, value] of array.entries()) { … } 
for (let i = 0; i < array.length; i++) { … }

  • 配置禁止引用package.json范圍外的包,配置示例:
"no-implicit-dependencies": true

  • 配置禁止空花括號(hào)對(duì)象({ }),配置示例:
"no-inferred-empty-object-type": true

因?yàn)榫幾g器無(wú)法推斷其類(lèi)型氓皱。


  • 配置禁止在非模板中使用${}語(yǔ)句,配置示例:
"no-invalid-template-strings": true

  • 配置禁止在類(lèi)范圍外使用this,配置示例:
"no-invalid-this": true

  • 配置禁止為類(lèi)或者接口重新定義構(gòu)造函數(shù),配置示例:
"no-misused-new": true

如果想要聲明一個(gè)稱(chēng)為類(lèi)的函數(shù)路召,那么最好使用declare class


  • 配置禁止使用null語(yǔ)法,配置示例:
"no-null-keyword": true

在JavaScript中,undefined一般指不存在并且沒(méi)有任何指向的值,而null則指這個(gè)值確實(shí)存在但是還沒(méi)有指向任何值波材。


  • 配置禁止聲明為nullundefined的聯(lián)合類(lèi)型的成員或者返回值,配置示例:
"no-null-undefined-union": true

  • 配置禁止在定義對(duì)象時(shí)使用as類(lèi)型斷言符號(hào),配置示例:
"no-object-literal-type-assertion": true

以下寫(xiě)法會(huì)通過(guò)檢查:

let foo = {} as any;
let foo = {} as unknown;

let foo = {} as any as Foo;
let foo = {} as unknown as Foo;
const x: T = { ... };

以下寫(xiě)法將不會(huì)通過(guò)檢查:

let foo = {} as Foo;
let foo = <Foo>{};

  • 配置警告在if條件中使用Promise函數(shù)作為條件,配置示例:
"no-promise-as-boolean": true

舉例股淡,以下寫(xiě)法將會(huì)通過(guò)檢查:

async function waiter(custumerDecisionPromise: Promise<any>) {
    if (await custumerDecisionPromise) {
        console.log("Customer ready to take an order.")
    }
}

以下寫(xiě)法將會(huì)警告:

async function waiter(custumerDecisionPromise: Promise<any>) {
    if (custumerDecisionPromise) {
        console.log("Customer ready to take an order.")
    }
}

  • 配置禁止指定的全局變量名,配置示例:
"no-restricted-globals": [true, "name", "length", "event"]

可以根據(jù)需要添加,以上是三個(gè)字符串默認(rèn)的列表廷区。


  • 配置禁止不必要的 return await,配置示例:
"no-return-await": true

異步函數(shù)總是在Promise中包含了返回值唯灵,使用await只會(huì)增加等待時(shí)間而不會(huì)改變語(yǔ)義。


  • 配置禁止陰影變量的聲明,配置示例:
"no-shadowed-variable": true

當(dāng)一個(gè)本地變量和局部變量重名時(shí)隙轻,就會(huì)產(chǎn)生陰影變量(shadow),這將會(huì)混淆語(yǔ)義埠帕。


  • 配置禁止數(shù)組缺少元素,配置示例:
"no-sparse-arrays": true

缺少元素會(huì)導(dǎo)致重復(fù)的逗號(hào),這是不必要的玖绿。

以下寫(xiě)法將會(huì)通過(guò)檢查:

const arr: string[] = ['elemenet1', 'element2'];

以下寫(xiě)法將會(huì)警告:

const arr: string[] = ['elemenet1',, 'element2'];

  • 配置禁止不必要的['propertyName']來(lái)訪(fǎng)問(wèn)對(duì)象屬性,配置示例:
"no-string-literal": true

允許 obj["prop-erty"] 方式( can’t be a regular property access )敛瓷,不允許 obj["property"] (應(yīng)該用 obj.property).。


  • 配置不允許拋出一個(gè)字符串,配置示例:
"no-string-throw": true

字符串或者基本類(lèi)型并不是一個(gè)可拋出的錯(cuò)誤對(duì)象類(lèi)型镰矿。

舉例琐驴,以下寫(xiě)法將通過(guò)檢查:

try {
    // ...
} catch (e) {
    throw e;
}

以下寫(xiě)法將會(huì)警告:

try {
    // ...
} catch {
    throw 'There was a problem.';
}

  • 配置禁止引入子模塊,配置示例:
"no-submodule-imports": true

  • 配置禁止不顯示聲明的fall-through,配置示例:
"no-switch-case-fall-through": true

switch分支中的 Fall though 一般是bug白热。

在JavaScript中,如果switch的case后不中斷遣总,那么代碼會(huì)繼續(xù)執(zhí)行锄贷,這叫做Fall Through

除非邏輯上需求牢酵,coder故意進(jìn)行Fall Through,那么其他情況下,編譯會(huì)報(bào)出警告悬包。

舉例,編碼時(shí)因需求確實(shí)不需要break馍乙,如下情況邏輯上無(wú)措布近,但是沒(méi)有顯示指明,則會(huì)報(bào)出警告:

switch(foo) {
    case 1:
        someFunc(foo);
    case 2:
        someOtherFunc(foo);
}

正確做法如下(加上注釋指明):

switch(foo) {
    case 1:
        someFunc(foo);
        /* falls through */
    case 2:
    case 3:
        someOtherFunc(foo);
}

  • 配置類(lèi)型相同的邏輯比較,配置示例:
"no-tautology-expression": true

在進(jìn)行比較時(shí),相同類(lèi)型的才進(jìn)行比較丝格。

例如:3 === 3, someVar === someVar, “1” > “1”


  • 配置禁止this的再定義,配置示例:
"no-this-assignment": true

在ES6中撑瞧,可以使用 lambdas 表達(dá)式來(lái)解決this的指向問(wèn)題。

例如显蝌,ES6以前:

const self = this;

setTimeout(function () {
    self.doWork();
});

ES6(在胖箭頭函數(shù)中已經(jīng)保留了this的作用域):

setTimeout(() => {
    this.doWork();
});

  • 配置當(dāng)一個(gè)方法在作用域之外被調(diào)用時(shí)報(bào)出警告,配置示例:
"no-unbound-method": true

當(dāng)類(lèi)被實(shí)例化成為一個(gè)實(shí)例的時(shí)候预伺,類(lèi)方法的作用域?qū)⒉辉陬?lèi)實(shí)例中,而在window/global中曼尊,例如以下代碼的log()函數(shù)將會(huì)調(diào)用window/global作用域的函數(shù):

class MyClass {
    public log(): void {
        console.log(this);
    }
}

const instance = new MyClass();
const log = instance.log;

log();  // 調(diào)用的是全局的log()函數(shù)

這種情況下應(yīng)該使用ES6的箭頭函數(shù)(會(huì)保留當(dāng)前調(diào)用者的作用域)或者指定作用域:

class MyClass {
    public logArrowBound = (): void => {
        console.log(bound);
    };

    public logManualBind(): void {
        console.log(this);
    }
}

const instance = new MyClass();
// 箭頭函數(shù)的作用域指向當(dāng)前調(diào)用它的地方酬诀,這里指向了instance
const logArrowBound = instance.logArrowBound;
// 綁定當(dāng)前作用域
const logManualBind = instance.logManualBind.bind(instance);

logArrowBound();
logManualBind();

  • 配置禁用非必要的類(lèi),配置示例:
"no-unnecessary-class": true
"no-unnecessary-class": ["allow-static-only", "allow-constructor-only"]

一般使用第二項(xiàng),保留類(lèi)似OO風(fēng)格語(yǔ)言的工具類(lèi)作用骆撇。


  • 配置禁止不安全的any類(lèi)型,配置示例:
"no-unsafe-any": true

推薦使用泛型瞒御。


  • 配置禁止不安全的finally塊,配置示例:
"no-unsafe-finally": true

禁止在finally塊中使用流程控制語(yǔ)句,例如return,continue,break,throws神郊。


  • 配置禁用無(wú)用代碼塊,配置示例:
"no-unused-expression": true

  • 配置禁用無(wú)用的參數(shù),配置示例:
"no-unused-variable": true

  • 配置禁止在聲明或者引入之前使用參數(shù),配置示例:
"no-use-before-declare": true

  • 配置禁用var,配置示例:
"no-var-keyword": true

ES6中,使用constlet來(lái)代替var肴裙。


  • 配置建議使用條件表達(dá)式而不是每個(gè)if分支都去做類(lèi)似的工作,配置示例:
"prefer-conditional-expression": true
"prefer-conditional-expression": [true, "check-else-if"]

一般使用第二項(xiàng)(嵌套的if語(yǔ)句也會(huì)被檢查)。


  • 配置使用ES2018的展開(kāi)運(yùn)算符來(lái)進(jìn)行對(duì)象合并屿岂,而不是用( Object.assign()),配置示例:
"prefer-object-spread": true

舉例:

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers)); // 這里的...numbers指的就是上面定義的數(shù)組
// expected output: 6

let obj1 = [1,2,3];
let obj2 = [4,5];
let obj3 = [...obj1,...obj2];  // => obj3 = [1,2,3,4,5]

  • 配置在使用 parseInt 時(shí)加上進(jìn)制參數(shù),配置示例:
"radix": true

舉例,以下寫(xiě)法將會(huì)通過(guò)檢查:

const x: string = '11';
const dec: number = parseInt(x, 10);

以下將會(huì)報(bào)警告:

const x: string = '11';
const dec: number = parseInt(x);

  • 配置參數(shù)相加時(shí)践宴,參數(shù)類(lèi)型必須相同(number或者string),配置示例:
"restrict-plus-operands": true

  • 配置禁止在static函數(shù)中使用this,配置示例:
"static-this": true

  • 配置限制出現(xiàn)在布爾類(lèi)型表達(dá)式中的值,默認(rèn)情況下只允許boolean值,配置示例:
"strict-boolean-expressions": true
"strict-boolean-expressions": [true, "allow-boolean-or-undefined"]

一般使用第二項(xiàng),這種情況下,null值將不會(huì)通過(guò)檢查爷怀,例如:!null將不會(huì)通過(guò)檢查阻肩。

更多配置參照官網(wǎng)。


  • 配置只允許在基類(lèi)類(lèi)型中進(jìn)行比較,配置示例:
"strict-comparisons": true

更多配置參照官網(wǎng)运授。


  • 配置禁止隱式的toString()調(diào)用,配置示例:
"strict-string-expressions": true

'foo' + bar將不會(huì)通過(guò)檢查烤惊。


  • 配置當(dāng)表達(dá)式總為true或者false時(shí)候報(bào)出警告,配置示例:
"strict-type-predicates": true

  • 配置switch表達(dá)式中必須有default項(xiàng),配置示例:
"switch-default": true

  • 配置實(shí)用三等號(hào)替代雙等號(hào),配置示例:
"triple-equals": true

  • 配置確保使用typeof時(shí)和正確的string字符串進(jìn)行比較,配置示例:
"typeof-compare": true

  • 配置禁用不必要的(空的)構(gòu)造函數(shù),配置示例:
"unnecessary-constructor": true

  • 配置如果顯示聲明的參數(shù)類(lèi)型是其默認(rèn)值,則顯示警告,配置示例:
"use-default-type-parameter": true

  • 配置使用isNaN()函數(shù)來(lái)判斷NaN值吁朦,配置示例:
"use-isnan": true

Maintainability(可維護(hù)性)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柒室,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逗宜,更是在濱河造成了極大的恐慌雄右,老刑警劉巖空骚,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異擂仍,居然都是意外死亡囤屹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)逢渔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肋坚,“玉大人,你說(shuō)我怎么就攤上這事肃廓≈茄幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵盲赊,是天一觀(guān)的道長(zhǎng)铣鹏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哀蘑,這世上最難降的妖魔是什么吝沫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮递礼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘羹幸。我一直安慰自己脊髓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布栅受。 她就那樣靜靜地躺著将硝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屏镊。 梳的紋絲不亂的頭發(fā)上依疼,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音而芥,去河邊找鬼律罢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棍丐,可吹牛的內(nèi)容都是我干的误辑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼歌逢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巾钉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起秘案,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤砰苍,失蹤者是張志新(化名)和其女友劉穎潦匈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赚导,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茬缩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辟癌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寒屯。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖黍少,靈堂內(nèi)的尸體忽然破棺而出寡夹,到底是詐尸還是另有隱情,我是刑警寧澤厂置,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布菩掏,位于F島的核電站,受9級(jí)特大地震影響昵济,放射性物質(zhì)發(fā)生泄漏智绸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一访忿、第九天 我趴在偏房一處隱蔽的房頂上張望瞧栗。 院中可真熱鬧,春花似錦海铆、人聲如沸迹恐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)殴边。三九已至,卻和暖如春珍语,著一層夾襖步出監(jiān)牢的瞬間锤岸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工板乙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留是偷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓亡驰,卻偏偏與公主長(zhǎng)得像晓猛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凡辱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容