jhipster使用jdl生成微服務(wù)和實(shí)體

僅適用于jhipster 5.1.0

JHipster域語(yǔ)言(JDL)

JDL是JHipster特定的領(lǐng)域語(yǔ)言傅寡,在其中我們?cè)黾恿耸褂煤?jiǎn)單且用戶友好的語(yǔ)法在單個(gè)文件(或多個(gè)文件)中描述所有實(shí)體及其關(guān)系的可能性命贴。

您可以使用我們的在線JDL-Studio IDE來(lái)創(chuàng)建JDL及其UML可視化。您也可以創(chuàng)建和導(dǎo)出或共享JDL模型的URL宰闰。

一旦生成了項(xiàng)目(現(xiàn)有項(xiàng)目或使用jhipster命令行生成),就可以使用import-jdl子生成器通過(guò)運(yùn)行從JDL文件中生成實(shí)體jhipster import-jdl your-jdl-file.jh(請(qǐng)確保在您的JHipster項(xiàng)目下執(zhí)行此命令)。您也可以使用JHipster UML生成實(shí)體并將其導(dǎo)出為JDL文件抖甘,方法是jhipster-uml your-xmi-file.xmi --to-jdl從生成的JHipster應(yīng)用程序的根目錄運(yùn)行。要了解有關(guān)JHipster UML的更多信息并進(jìn)行安裝葫慎,請(qǐng)轉(zhuǎn)到JHipster UML文檔衔彻。

這可以代替使用實(shí)體子生成器。這個(gè)想法是偷办,使用視覺(jué)工具來(lái)管理關(guān)系比使用經(jīng)典的約曼問(wèn)答更容易艰额。

JDL項(xiàng)目可在GitHub上獲得,它是一個(gè)開(kāi)源項(xiàng)目椒涯,例如JHipster(Apache 2.0許可)柄沮。它也可以用作執(zhí)行JDL解析的節(jié)點(diǎn)庫(kù)。

如果您喜歡JHipster域語(yǔ)言废岂,請(qǐng)不要忘記在GitHub上給項(xiàng)目加星號(hào)祖搓! 如果您喜歡JDL Studio,請(qǐng)不要忘記在GitHub上給該項(xiàng)目加分湖苞!

這是完整的JDL文檔:

  1. JDL示例
  2. 如何使用它
  3. 語(yǔ)言
    3.1 實(shí)體聲明
    3.2 關(guān)系聲明
    3.3 枚舉
    3.4 斑點(diǎn)
    3.5 選項(xiàng)聲明
    3.6 與微服務(wù)相關(guān)的選項(xiàng)
  4. 評(píng)論
  5. 所有關(guān)系
  6. 常數(shù)
  7. 附件
    7.1 可用類型和約束
    7.2 可用選項(xiàng)
  8. 問(wèn)題與錯(cuò)誤

JDL示例

Oracle“人力資源”示例應(yīng)用程序已轉(zhuǎn)換為JDL拯欧,可在此處獲得。默認(rèn)情況下财骨,同樣的應(yīng)用程序也會(huì)加載到JDL-Studio中镐作。

如何使用它

如果要使用JHipster UML代替import-jdl子生成器,則需要通過(guò)運(yùn)行進(jìn)行安裝npm install -g jhipster-uml蚓再。

然后滑肉,您可以使用JDL文件生成實(shí)體:

  • 只需創(chuàng)建擴(kuò)展名為“ .jh”或“ .jdl”的文件包各,
  • 聲明您的實(shí)體和關(guān)系摘仅,或使用JDL-Studio創(chuàng)建和下載文件,
  • 在您的JHipster應(yīng)用程序的根文件夾中问畅,運(yùn)行jhipster import-jdl my_file.jdljhipster-uml my_file.jdl娃属。

Voilà,您完成了护姆!

如果您在團(tuán)隊(duì)中工作矾端,也許您希望擁有多個(gè)文件而不是一個(gè)文件。我們添加了此選項(xiàng)卵皂,因此您不必手動(dòng)將所有文件串聯(lián)在一起秩铆,只需運(yùn)行jhipster import-jdl my_file1.jh my_file2.jh或即可jhipster-uml my_file1.jh my_file2.jh

如果不想重新生成實(shí)體,則在導(dǎo)入JDL時(shí)殴玛,可以使用該--json-only標(biāo)志跳過(guò)實(shí)體創(chuàng)建部分捅膘,僅在文件.jhipster夾中創(chuàng)建json文件。

jhipster import-jdl ./my-jdl-file.jdl --json-only

默認(rèn)情況下滚粟,import-jdl僅重新生成已更改的實(shí)體寻仗,如果要重新生成所有實(shí)體,則傳遞該--force 標(biāo)志凡壤。請(qǐng)注意署尤,這將覆蓋您對(duì)實(shí)體文件的所有本地更改

jhipster import-jdl ./my-jdl-file.jdl --force

如果要在項(xiàng)目中使用它,可以通過(guò)在npm install jhipster-core --save本地安裝它并將其保存在package.json文件中來(lái)進(jìn)行添加亚侠。

語(yǔ)言

我們?cè)噲D使語(yǔ)法對(duì)開(kāi)發(fā)人員盡可能友好曹体。您可以用它做三件事:

  • 聲明實(shí)體及其屬性,
  • 聲明他們之間的關(guān)系硝烂,
  • 并聲明一些JHipster特定的選項(xiàng)混坞。

實(shí)體聲明

實(shí)體聲明如下:

entity <entity name> {
  <field name> <type> [<validation>*]
}

  • <entity name> 是實(shí)體的名稱,
  • <field name> 實(shí)體一個(gè)字段的名稱钢坦,
  • <type> JHipster支持的字段類型究孕,
  • 并可以選擇<validation>驗(yàn)證該字段。

可能的類型和驗(yàn)證是那些描述這里爹凹,如果驗(yàn)證需要一個(gè)值厨诸,只需添加(<value>)驗(yàn)證的名字之后。

這是一個(gè)JDL代碼示例:

entity A
entity B
entity C
entity D {
  name String required,
  address String required maxlength(100),
  age Integer required min(18)
}

正則表達(dá)式有點(diǎn)特殊禾酱,因?yàn)樗鼈兊挠梅ㄈ缦拢▉?lái)自v1.3.6):

entity A {
  myString String required minlength(1) maxlength(42) pattern(/[A-Z]+/)
}

如果您使用的是v4.9.X之前的生成器微酬,則需要使用類似的模式pattern('[A-Z]+'

因?yàn)镴DL易于使用和讀取颤陶,所以如果您的實(shí)體為空(無(wú)字段)颗管,則可以使用entity A或聲明實(shí)體entity A {}

請(qǐng)注意滓走,JHipster添加了一個(gè)默認(rèn)id字段垦江,因此您不必?fù)?dān)心它。

關(guān)系聲明

關(guān)系聲明如下:

relationship (OneToMany | ManyToOne | OneToOne | ManyToMany) {
  <from entity>[{<relationship name>[(<display field>)]}] to <to entity>[{<relationship name>[(<display field>)]}]
}

  • (OneToMany | ManyToOne| OneToOne | ManyToMany) 是你的關(guān)系類型
  • <from entity> 是關(guān)系的實(shí)體所有者的名稱:來(lái)源搅方,
  • <to entity> 是關(guān)系要到達(dá)的實(shí)體的名稱:目的地比吭,
  • <relationship name> 是具有另一端類型的字段名稱,
  • <display field>是應(yīng)顯示在選擇框中的字段名稱(默認(rèn)值:)id姨涡,
  • required 是否需要注入字段衩藤。

這是一個(gè)簡(jiǎn)單的例子:

一本書(shū)有一個(gè)必填的作者,一個(gè)作者有幾本書(shū)涛漂。

entity Book
entity Author {
  name String required
}

relationship OneToMany {
  Author{book} to Book{writer(name) required}
}

在這里赏表,Book該類將具有一個(gè)必填字段writer,該name字段將通過(guò)的字段進(jìn)行鏈接Author

當(dāng)然瓢剿,在實(shí)際情況下岁诉,您將有很多關(guān)系,并且始終編寫(xiě)相同的三行代碼可能會(huì)很乏味跋选。這就是為什么您可以聲明如下內(nèi)容:

entity A
entity B
entity C
entity D

relationship OneToOne {
  A涕癣 to B{a},
  B{c} to C
}
relationship ManyToMany {
  Ankhnmjl to D{a},
  Ccgeeifh to D{c}
}

始終使用該id字段來(lái)完成聯(lián)接,該字段也是在前端編輯關(guān)系時(shí)顯示的默認(rèn)字段前标。如果應(yīng)該顯示另一個(gè)字段坠韩,則可以這樣指定:

entity A {
  name String required
}
entity B

relationship OneToOne {
  A to B{a(name)}
}

這使JHipster生成了一個(gè)REST資源炼列,該資源將鏈接的實(shí)體id和兩者都返回name到前端只搁,因此可以將名稱顯示給用戶。

枚舉

要使用JDL枚舉俭尖,請(qǐng)執(zhí)行以下操作:

  • 在文件中的所需位置聲明一個(gè)枚舉:

      enum Language {
        FRENCH, ENGLISH, SPANISH
      }
    
    
  • 在實(shí)體中氢惋,添加以Enum作為類型的字段:

      entity Book {
        title String required,
        description String,
        language Language
      }
    
    

Blob(字節(jié)[])

JHipster提供了一個(gè)不錯(cuò)的選擇,因?yàn)榭梢栽趫D像類型或任何二進(jìn)制類型之間進(jìn)行選擇稽犁。JDL允許您執(zhí)行相同的操作:只需使用編輯器創(chuàng)建一個(gè)自定義類型(請(qǐng)參閱DataType)焰望,然后根據(jù)以下約定對(duì)其進(jìn)行命名:

  • AnyBlob或僅Blob創(chuàng)建“ any”二進(jìn)制類型的字段;
  • ImageBlob 創(chuàng)建一個(gè)意為圖像的字段已亥。
  • TextBlob 為CLOB(長(zhǎng)文本)創(chuàng)建一個(gè)字段熊赖。

您可以根據(jù)需要?jiǎng)?chuàng)建任意多個(gè)DataType。

期權(quán)申報(bào)

在JHipster中虑椎,您可以為實(shí)體指定選項(xiàng)震鹉,例如分頁(yè)或DTO。您可以對(duì)JDL執(zhí)行相同的操作:

entity A {
  name String required
}
entity B
entity C

dto A, B with mapstruct

paginate A with infinite-scroll
paginate B with pagination
paginate C with pager  // pager is only available in AngularJS

service A with serviceClass
service C with serviceImpl

關(guān)鍵字dto捆姜,paginate传趾,servicewith加入到語(yǔ)法來(lái)支持這些變化。如果指定了錯(cuò)誤的選項(xiàng)泥技,那么JDL會(huì)用一條漂亮的紅色消息通知您浆兰,并且只會(huì)忽略它,以免損壞JHipster的JSON文件零抬。

服務(wù)選項(xiàng)

指定的服務(wù)不會(huì)創(chuàng)建將直接調(diào)用存儲(chǔ)庫(kù)接口的資源類镊讼。這是默認(rèn)和最簡(jiǎn)單的選項(xiàng),請(qǐng)參閱A平夜。帶有serviceClass的服務(wù)(請(qǐng)參見(jiàn)B)將使資源調(diào)用服務(wù)類,后者將調(diào)用存儲(chǔ)庫(kù)接口卸亮。帶serviceImpl的Service(請(qǐng)參閱C)將創(chuàng)建一個(gè)服務(wù)接口忽妒,該接口將由資源類使用。該接口由impl類實(shí)現(xiàn),該類將調(diào)用存儲(chǔ)庫(kù)接口段直。

如果不確定這是最簡(jiǎn)單的選擇并且對(duì)CRUD有用吃溅,則不使用任何服務(wù)。如果您將有很多業(yè)務(wù)邏輯鸯檬,這些業(yè)務(wù)邏輯將使用多個(gè)存儲(chǔ)庫(kù)决侈,則非常適合將服務(wù)與類一起使用,這使其成為服務(wù)類的理想選擇喧务。Jhipster并不喜歡不需要的接口赖歌,但是如果您喜歡它們,請(qǐng)使用impl進(jìn)行服務(wù)功茴。

entity A
entity B
entity C

// no service for A
service B with serviceClass
service C with serviceImpl

JDL還支持批量選項(xiàng)設(shè)置庐冯。可以這樣做:

entity A
entity B
...
entity Z

dto * with mapstruct
service all with serviceImpl
paginate C with pagination

請(qǐng)注意坎穿,*all是等效的展父。最新版本引入了排除功能(在為每個(gè)實(shí)體設(shè)置選項(xiàng)時(shí),這是一個(gè)功能強(qiáng)大的選項(xiàng)):

entity A
entity B
...
entity Z

dto * with mapstruct except A
service all with serviceImpl except A, B, C
paginate C with pagination

使用JHipster玲昧,您還可以告訴您是否需要任何客戶端代碼或服務(wù)器代碼栖茉。即使您想在與Angular相關(guān)的文件中添加后綴,也可以在JHipster中進(jìn)行孵延。在您的JDL文件中衡载,只需添加以下幾行即可:

entity A
entity B
entity C

skipClient for A
skipServer for B
angularSuffix * with mySuperEntities

最后,還可以指定表名(默認(rèn)情況下將使用實(shí)體名稱):

entity A // A is the table's name here
entity B (the_best_entity) // the_best_entity is the table's name

與微服務(wù)相關(guān)的選項(xiàng)

從JHipster v3開(kāi)始隙袁,可以創(chuàng)建微服務(wù)痰娱。您可以指定一些選項(xiàng)以在JDL中生成您的實(shí)體:微服務(wù)的名稱和搜索引擎。

您可以通過(guò)以下方法指定微服務(wù)的名稱(JHipster應(yīng)用程序的名稱):

entity A
entity B
entity C

microservice * with mysuperjhipsterapp except C
microservice C with myotherjhipsterapp
search * with elasticsearch except C

第一個(gè)選項(xiàng)用于告訴JHipster您希望微服務(wù)處理您的實(shí)體菩收,而第二個(gè)選項(xiàng)指定如何以及是否希望搜索實(shí)體梨睁。

評(píng)論和Javadoc

可以將Javadoc和注釋添加到JDL文件。
就像在Java中一樣娜饵,此示例演示了如何添加Javadoc注釋:

/**
 * Class comments.
 * @author The JHipster team.
 */
entity MyEntity { // another form of comment
  /** A required attribute */
  myField String required,
  mySecondField String // another form of comment
}

/**
 * Second entity.
 */
entity MySecondEntity {}

relationship OneToMany {
  /** This is possible too! */
  MyEntity{mySecondEntity}
  to
  /**
   * And this too!
   */
  MySecondEntity{myEntity}
}

這些注釋稍后將由JHipster添加為Javadoc注釋坡贺。

JDL有自己的一種評(píng)論:

// an ignored comment
/** not an ignored comment */

因此,任何//以J 開(kāi)頭的內(nèi)容都被視為JDL的內(nèi)部注釋箱舞,因此不會(huì)被視為Javadoc遍坟。

請(qǐng)注意,#在解析期間晴股,以開(kāi)頭的JDL Studio指令將被忽略愿伴。

注釋的另一種形式是以下注釋:

entity A {
  name String /** My super field */
  count Integer /** My other super field */
}

在這里,A的名稱將帶有注釋My super field电湘,B的將帶有注釋My other super field隔节。是的鹅经,逗號(hào)不是強(qiáng)制性的,但最好使用逗號(hào)怎诫,以免在代碼中出錯(cuò)瘾晃。如果您想混合使用逗號(hào)和以下注釋,請(qǐng)當(dāng)心幻妓!

entity A {
  name String, /** My comment */
  count Integer
}

A的名字將沒(méi)有注釋蹦误,因?yàn)橛?jì)數(shù)會(huì)。

所有關(guān)系

有關(guān)如何使用JDL創(chuàng)建關(guān)系的說(shuō)明肉津。

一對(duì)一

雙向關(guān)系强胰,其中汽車(chē)有駕駛員,而駕駛員有汽車(chē)阀圾。

entity Driver
entity Car
relationship OneToOne {
  Car{driver} to Driver{car}
}

一個(gè)單向示例哪廓,其中一個(gè)公民擁有一個(gè)護(hù)照,但該護(hù)照無(wú)權(quán)獨(dú)占其所有者初烘。

entity Citizen
entity Passport
relationship OneToOne {
  Citizen{passport} to Passport
}

一對(duì)多

雙向關(guān)系涡真,其中所有者沒(méi)有,一個(gè)或多個(gè)Car對(duì)象肾筐,并且Car知道其所有者哆料。

entity Owner
entity Car
relationship OneToMany {
  Owner{car} to Car{owner}
}

JHipster不支持這種關(guān)系的單向版本,但是看起來(lái)像這樣:

entity Owner
entity Car
relationship OneToMany {
  Owner{car} to Car
}

多對(duì)一

一對(duì)多關(guān)系的互惠版本與以前相同吗铐。汽車(chē)認(rèn)識(shí)車(chē)主的單向版本:

entity Owner
entity Car
relationship ManyToOne {
  Car{owner} to Owner
}

多對(duì)多

最后东亦,在此示例中,我們的Car知道其駕駛員唬渗,并且Driver對(duì)象可以訪問(wèn)其汽車(chē)典阵。

entity Driver
entity Car
relationship ManyToMany {
  Car{driver} to Driver{car}
}

請(qǐng)注意,關(guān)系的擁有方必須在左側(cè)

常數(shù)

從JHipster Core v1.2.7開(kāi)始镊逝,JDL支持?jǐn)?shù)字常量壮啊。這是一個(gè)例子:

DEFAULT_MIN_LENGTH = 1
DEFAULT_MAX_LENGTH = 42
DEFAULT_MIN_BYTES = 20
DEFAULT_MAX_BYTES = 40
DEFAULT_MIN = 0
DEFAULT_MAX = 41

entity A {
  name String minlength(DEFAULT_MIN_LENGTH) maxlength(DEFAULT_MAX_LENGTH)
  content TextBlob minbytes(DEFAULT_MIN_BYTES) maxbytes(DEFAULT_MAX_BYTES)
  count Integer min(DEFAULT_MIN) max(DEFAULT_MAX)
}

附件

可用的類型和約束

這是JDL支持的類型:

| 的SQL | MongoDB | 卡桑德拉 | 驗(yàn)證方式 |
| 串 | 串 | 串 | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">必需,最小長(zhǎng)度撑蒜,最大長(zhǎng)度歹啼,模式</dfn> |
| 整數(shù) | 整數(shù) | 整數(shù) | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">所需,最小座菠,最大</dfn> |
| 長(zhǎng) | 長(zhǎng) | 長(zhǎng) | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">所需狸眼,最小,最大</dfn> |
| 大十進(jìn)制 | 大十進(jìn)制 | 大十進(jìn)制 | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">所需浴滴,最小拓萌,最大</dfn> |
| 浮動(dòng) | 浮動(dòng) | 浮動(dòng) | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">所需,最小巡莹,最大</dfn> |
| 雙 | 雙 | 雙 | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">所需司志,最小甜紫,最大</dfn> |
| 枚舉 | 枚舉 | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |
| 布爾型 | 布爾型 | 布爾型 | 需要 |
| 本地日期 | 本地日期 | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |
| | | 日期 | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |
| ZonedDateTime | ZonedDateTime | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |
| | | UUID | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |
| 斑點(diǎn) | 斑點(diǎn) | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">必需降宅,最小字節(jié)骂远,最大字節(jié)</dfn> |
| AnyBlob | AnyBlob | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">必需,最小字節(jié)腰根,最大字節(jié)</dfn> |
| ImageBlob | ImageBlob | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">必需激才,最小字節(jié),最大字節(jié)</dfn> |
| TextBlob | TextBlob | | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">必需额嘿,最小字節(jié)瘸恼,最大字節(jié)</dfn> |
| 瞬間 | 瞬間 | 瞬間 | <dfn style="box-sizing: border-box; outline: none; font-style: italic;">需要</dfn> |

可用選項(xiàng)

一元期權(quán)

這些選項(xiàng)沒(méi)有任何價(jià)值:

  • skipClient
  • skipServer
  • noFluentMethod
  • filter

它們可以這樣使用: <OPTION> <ENTITIES | * | all> except? <ENTITIES>

二元期權(quán)

這些選項(xiàng)采用以下值:

  • dtomapstruct
  • serviceserviceClassserviceImpl
  • paginatepager册养,pagination东帅,infinite-scroll
  • searchelasticsearch
  • microservice (自定義值)
  • angularSuffix (自定義值)

問(wèn)題與錯(cuò)誤

JDL 在GitHub上可用,并遵循與JHipster相同的貢獻(xiàn)準(zhǔn)則球拦。

請(qǐng)使用我們的項(xiàng)目提交有關(guān)庫(kù)本身的問(wèn)題和請(qǐng)求請(qǐng)求靠闭。

提交任何內(nèi)容時(shí),您都必須盡可能精確:

  • 一個(gè)已發(fā)布的問(wèn)題只能有一個(gè)問(wèn)題(或一個(gè)需求/問(wèn)題)坎炼;
  • 拉請(qǐng)求是受歡迎的愧膀,但是提交必須是“原子的”才能真正理解。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谣光,一起剝皮案震驚了整個(gè)濱河市檩淋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萄金,老刑警劉巖蟀悦,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異氧敢,居然都是意外死亡日戈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)福稳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涎拉,“玉大人,你說(shuō)我怎么就攤上這事的圆」呐。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵越妈,是天一觀的道長(zhǎng)季俩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)梅掠,這世上最難降的妖魔是什么酌住? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任店归,我火速辦了婚禮,結(jié)果婚禮上酪我,老公的妹妹穿的比我還像新娘消痛。我一直安慰自己,他們只是感情好都哭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布秩伞。 她就那樣靜靜地躺著,像睡著了一般欺矫。 火紅的嫁衣襯著肌膚如雪纱新。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天穆趴,我揣著相機(jī)與錄音脸爱,去河邊找鬼。 笑死未妹,一個(gè)胖子當(dāng)著我的面吹牛簿废,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播教寂,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捏鱼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了酪耕?” 一聲冷哼從身側(cè)響起导梆,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迂烁,沒(méi)想到半個(gè)月后看尼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盟步,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年藏斩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片却盘。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狰域,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黄橘,到底是詐尸還是另有隱情兆览,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布塞关,位于F島的核電站抬探,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏帆赢。R本人自食惡果不足惜小压,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一线梗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怠益,春花似錦仪搔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)憋他。三九已至孩饼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竹挡,已是汗流浹背镀娶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揪罕,地道東北人梯码。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像好啰,于是被迫代替她去往敵國(guó)和親轩娶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351