react-native-pg-style使用方法(以最簡單的方式編寫樣式代碼,拋棄react-native標(biāo)準(zhǔn)的樣式創(chuàng)建方式)

react-native-pg-style

以最簡單的方式編寫樣式代碼,拋棄react-native標(biāo)準(zhǔn)的樣式創(chuàng)建方式.

看大家寫的源碼中都是按照react-native標(biāo)準(zhǔn)的樣式創(chuàng)建方式來寫樣式代碼的,樣式代碼就占了大概四分之一,甚至三分之一的代碼,然而我卻喜歡把樣式寫在一行當(dāng)中.而不用const styles=StyleSheet.create({樣式屬性...})來寫,我覺得這樣在改動樣式時便不用在跑到StyleSheet.create中修改,而且代碼量會少很多,于是就有了這個插件.

下面說明中的插件就是當(dāng)前這個react-native-pg-style插件

github地址: https://github.com/geek-prince/react-native-gp-style

npm地址: https://www.npmjs.com/package/react-native-gp-style

先簡單感受一下

以侵入式等級1為例,什么是侵入式等下下面再介紹

(一個簡單的按鈕)

標(biāo)準(zhǔn)方法創(chuàng)建該樣式為:

const styles=StyleSheet.create({
    container:{
        padding:15,
        width:Dimensions.get('window').width,
        backgroundColor:'#999',
        marginTop:100,
    },
    button:{
        width:'100%',
        height:50,
        backgroundColor:'#f90',
        justifyContent:'center',
        alignItems:'center',
        borderColor:'#0f9',
        borderRadius:25,
        borderWidth:2,
    },
    btnText:{
        backgroundColor:'#0000',
        color:'#fff',
        fontSize:20,
    },
});

<View style={styles.container}>
  <TouchableOpacity style={styles.button}>
      <Text style={styles.btnText}>有本事點我呀</Text>
  </TouchableOpacity>
</View>

很長的一段代碼對吧,那再來看看用了這個插件之后的代碼為:

<View style={[sf.spad(15),sf.sw(s.w),s.bg999,sf.smarT(100)]}>
  <TouchableOpacity style={[s.w100,sf.sh(50),sf.sbgc('#f90'),s.center,sf.sb('#0f9',25,2)]}>
      <Text style={[sf.stext(20,'#fff',)]}>有本事點我呀</Text>
  </TouchableOpacity>
</View>

直接發(fā)樣式寫在一行內(nèi),完全拋棄const styles=StyleSheet.create這樣的方法,要修改時直接在組件這里就改了,不用跑到const styles=StyleSheet.create中去改,即使代碼寫在一行內(nèi)也簡短不顯得臃腫.

安裝

npm install react-native-gp-style --save

如何使用

首先導(dǎo)入插件

導(dǎo)入插件的三種方式(侵入方式的三個等級,根據(jù)情況選擇其中一種方式導(dǎo)入)

先導(dǎo)入插件

import Styles from 'react-native-gp-style';

然后根據(jù)情況(看下面的三種方式的優(yōu)缺點)選擇下面的一種方式使用插件.

  • 非侵入式(侵入等級0):

let {s,sf}=new Styles(0);

或自定義名稱

let {s:styles,sf:styleFunctions}=new Styles(0);

  • 部分侵入式(侵入等級1,推薦):

new Styles(1);

或自定義名稱

new Styles(1,'styles','styleFunctions');

  • 完全侵入式(侵入等級2):

new Styles(2);

或自定義名稱

new Styles(2,'styles');

怎樣使用

像上面一樣導(dǎo)入之后有兩個變量s,sf(侵入式導(dǎo)入的話存放在global全局變量中).

  • s是一個對象,這個對象中以簡單的鍵名key對應(yīng)到一個固定的樣式.
    -- 比如s.center對應(yīng)的是子組件水平,垂直居中的樣式{justifyContent:'center',alignItems:'center'}.
    -- 比如s.w對應(yīng)的是當(dāng)前設(shè)備的寬度(侵入式等級2時,直接w){width:Dimensions.get('window').width}.

  • sf也是一個對象,這個對象中以簡單的鍵名key對應(yīng)到一個獲取樣式的方法.可以通過調(diào)用這些方法,傳入方法參數(shù),獲得對應(yīng)的樣式.
    -- 比如sf.swh(100,200)就獲取到寬100,高200的樣式(可以只設(shè)置一個值,此時寬高都等于這個值){width:10,height:20}.(侵入式等級為2時直接swh(10,20)).
    -- 比如sf.spad(10,20,30,40)就獲得內(nèi)間距上10,右20,下30,左40的樣式{paddingTop:10,paddingRight:20,paddingBottom:30,paddingLeft:40}.(可以給出1-4個參數(shù),根據(jù)局不同參數(shù)個數(shù)設(shè)置不同內(nèi)間距,就和在css中一樣的效果)

如果一個view要同時具有上面舉例的這些樣式屬性的時候就只需要這樣<View style={[s.center,s.w,sf.swh(100,200),sf.spad(10,20,30,40)]}></View>

如果不喜歡s,sf這兩個名稱的話,可以像上面一樣自定義這兩個變量名的名稱,上面就把這兩個變量名改為了styles,styleFunctions,大家可以根據(jù)自己的需要自定義名稱,上面只是演示,自定義名稱的話應(yīng)該盡量的短小.

三種導(dǎo)入方式的優(yōu)缺點:

  • 0->非侵入式導(dǎo)入:

-- 優(yōu)點:不占用任何一個全局變量,不會造成全局變量污染.IDE中可以通過s.,sf.來獲得屬性名,方法名,方法參數(shù)的提示
-- 缺點:每個需要用到的文件中都要import,new一次.每個樣式屬性名,樣式方法名前面都要寫s.,sf.比較麻煩.如果你自己取更長的別名的話可能使代碼變長

  • 1->部分侵入式導(dǎo)入:
    -- 優(yōu)點:只用在主入口文件(可能是index.js,index.ios.js,index.android.js,Main.js等等,具體看自己的情況)中import,new一次,以后就可以在項目中的所有文件使用.IDE中可以通過s.,sf.來獲得屬性名,方法名,方法參數(shù)的提示
    -- 缺點:會占用s,sf(或者你自定義的名稱)的兩個全局變量.每個樣式屬性名,樣式方法名前面都要寫s.,sf.比較麻煩.
  • 2->完全侵入式導(dǎo)入:
    -- 優(yōu)點:只用在主入口文件中import,new一次,以后就可以在項目中的所有文件使用.調(diào)用設(shè)置樣式的方法時不用再sf.spad(15),直接spad(15).獲得屏幕的寬高直接w,h,而不用s.w,s.h,預(yù)置背景色,顏色,flex布局等也是直接寫.簡單方便.
    -- 缺點:會占用s,以及一系列s開頭的方法的全局變量,以及一系列顏色,flex布局,寬高樣式相關(guān)的全局變量,造成全局變量污染.IDE中不能用sf.來獲得方法名,方法參數(shù)的提示,對方法名不熟悉的話也會造成一定的困擾.

樣式屬性一覽表(即上面的s對象中的鍵值對):

為了方便大家不同的習(xí)慣,有的相同的樣式屬性會有不同的鍵名,比如讓子組件水平,垂直居中的樣式屬性,可以s.center(見名知意,但略長),也可以直接s.c(超級短,但不了解的人根本不知道這是啥).

固定部分,下面部分的內(nèi)容所有侵入式級別都是通過s.center這樣的形式調(diào)用

key(樣式屬性鍵名) value(對應(yīng)的樣式屬性) 解釋
---------------- 對子組件的布局方式部分 ----------------
spaceB或spaceBetween或sB {justifyContent:"space-between"} 讓子組件向兩邊分開
spaceA或spaceAround或sA {justifyContent:"space-around"} 讓子組件向兩邊分開,并且左右留間距
row {flexDirection:'row'} 讓View子組件橫向排布(默認縱向)
wrap {flexWrap:'wrap'} 超出部分子組件換行
---------------- 對子組件的對齊方式部分 ----------------
center或c {justifyContent:'center',alignItems:'center'} 讓子組件水平,豎直都居中
aliCenter或aliC {alignItems:'center'} 讓子組件在次軸方向上居中對齊
aliEnd或aliE {alignItems:"flex-end"} 讓子組件在次軸方向上向尾部對齊
justCenter或justC {justifyContent:'center'} 讓子組件在主軸方向上居中對齊
justEnd或justE {justifyContent:"flex-end"} 讓子組件在主軸方向上向尾部對齊
---------------- 對自身組件相對父組件的對齊方式部分 ----------------
aliSelfStart或aliSS {alignSelf:'flex-start'} 對齊父組件頭部
aliSelfCenter或aliSC {alignSelf:'center'} 相對父組件居中對齊
aliSelfEnd或aliSE {alignSelf:'flex-end'} 對齊到父組件的尾部
---------------- 絕對定位,相對定位部分 ----------------
rel {position:'relative'} 設(shè)置組件為相對定位
abs {position:'absolute'} 設(shè)置組件為絕對定位
absTop或absT {position:'absolute',top:0} 設(shè)置組件為絕對定位,并定位在父組件最頂部
absBottom或absB {position:'absolute',bottom:0} 設(shè)置組件為絕對定位,并定位在父組件最底部
absLeft或absL {position:'absolute',left:0} 設(shè)置組件為絕對定位,并定位在父組件左方
absRight或absR {position:'absolute',right:0} 設(shè)置組件為絕對定位,并定位在父組件右方
---------------- 圖片樣式部分 ----------------
cover {resizeMode:'cover'} 圖片以剛好占滿指定寬高的形式顯示
contain {resizeMode:'contain'} 圖片以剛好能在指定寬高內(nèi)顯示完整的形式顯示
---------------- 文字樣式部分 ----------------
textCenter或tC {textAlign:'center'} 文字居中對齊顯示
textLeft或tL {textAlign:'left'} 文字靠左對齊顯示
textRight或tR {textAlign:'right'} 文字靠右對齊顯示
---------------- 寬高樣式部分 ----------------
w或width {width:Dimensions.get('window').width}, 當(dāng)前屏幕寬度
h或height {height:Dimensions.get('window').height} 當(dāng)前屏幕高度
w100 {width:'100%'} 和父組件等寬
h100 {height:'100%'} 和父組件等高
wh100 {width:'100%',height:'100%'} 和父組件等寬等高
wh0 {width:0,height:0} 沒有尺寸的寬高樣式
whAll whAll:{width:w,height:isios?h:h-25} 占滿整個屏幕的寬高樣式
---------------- 其他常用樣式屬性部分 ----------------
hidden {overflow:'hidden'}, 超出組件范圍內(nèi)容隱藏
show或visible {overflow:'visible'} 超出組件范圍內(nèi)容顯示
opa0 {opacity:0}, 透明度0

多個常用樣式部分,下面的樣式在侵入式等級0和1下依然是s.f3(表示{flex:3})這樣調(diào)用,在侵入式等級2下直接f3這樣調(diào)用.

  • 一系列的flex布局部分:

s.f1到s.f12分別對應(yīng){flex:1}到{flex:12}

  • 一系列的由白到黑的灰色背景顏色,文字顏色:

s.bg000,s.bg111一直到s.bgeee,s.bgfff分別對應(yīng)由黑{backgroundColor:'#000'}到白{backgroundColor:''#fff}的灰色背景顏色

s.c000,s.c111一直到s.ceee,s.cfff則分別對應(yīng)由黑{color:'#000'}到白{color:''#fff}的灰色文字顏色

  • 一系列由屏幕寬高按比例計算出來的常用寬高的值:

以屏幕寬高375,667為例.
比如h1,w1就分別為375,667.h2,w2就分別為187.5,333.5.(這里的1,2就是對對屏幕寬高的除數(shù),預(yù)設(shè)的值有[1,2,3,4,5,6,7,8,9,10,11,12,16,32,64,128]).

注意:這里得到的是屏幕的屏幕寬高比例算出來的數(shù)值,而非樣式,使用時應(yīng)該sf.sw(w12),sf.sh(h3)這樣使用.

樣式方法一覽表(即上面的sf對象中的方法)

和上面一樣,相同的方法可能會給出多個對應(yīng)的鍵名.(為了以侵入式等級2導(dǎo)入使用時盡量的不與全局變量沖突,所以所有方法名(鍵名)前面都加有一個s)

下面的所有方法,在侵入式0和1中都是通過sf.sw(100)方式來調(diào)用,在侵入式等級2中都是直接通過方法名調(diào)用sw(100)

key(樣式方法鍵名) 對應(yīng)的樣式方法的解釋 對應(yīng)的樣式方法的使用范例(為方便以侵入式2為例)
---------------- 寬高樣式方法部分 ----------------
sw或swidth 通過給定的寬度數(shù)值設(shè)置寬度 sw(100)設(shè)置寬度為100
sh或sheight 通過給定的高度數(shù)值設(shè)置高度 sh(h2)設(shè)置高度為屏幕高度的一半
swh 通過給定的寬度/高度數(shù)值同時設(shè)置寬度/高度(只給出一個時設(shè)置寬高為相同的數(shù)值) swh(100,200),設(shè)置寬100,高200;swh(100),設(shè)置寬高都為100
---------------- 邊框樣式方法部分 ----------------
sbw或sborderWidth 設(shè)置邊框的寬度為指定的值 sbw(2),設(shè)置邊框?qū)挒?
sbc或sborderColor 設(shè)置邊框顏色為指定顏色 sbc('#f90'),設(shè)置邊框顏色為橙色
sbr或sborderRadius 設(shè)置邊框圓角為指定大小 sbr(50),設(shè)置邊框大小為50
sb或sborder 統(tǒng)一設(shè)置邊框的常用屬性 sb('#f90',50,2),設(shè)置邊框顏色為橙色,圓角為50,寬度為2.第三個參數(shù)寬度,默認值為1
---------------- 內(nèi)間距樣式方法部分 ----------------
spadT或spadTop 設(shè)置上內(nèi)間距為指定數(shù)值 spadT(100),設(shè)置上內(nèi)間距為100
spadB或spadBottom 設(shè)置下內(nèi)間距為指定數(shù)值 和上面一樣
spadV或spadVertical 設(shè)置豎直方向(上下)內(nèi)間距為指定數(shù)值 和上面一樣
spadL或spadLeft 設(shè)置左內(nèi)間距為指定數(shù)值 和上面一樣
spadR或spadRight 設(shè)置右內(nèi)間距為指定數(shù)值 和上面一樣
spadH或spadHorizontal 設(shè)置水平方向(左右)內(nèi)間距為指定數(shù)值 和上面一樣
spad或spadAll 上下左右方向的內(nèi)間距一起設(shè)置,參數(shù)可以是1到4位,和css中一樣,給出1位參數(shù)時表示上下左右內(nèi)間距都設(shè)置為該值;2位時豎直方向內(nèi)間距為第1位參數(shù)的值,水平方向內(nèi)間距為第2位參數(shù)的值;3位參數(shù)時水平方向內(nèi)間距為第2位參數(shù)的值,上下方向內(nèi)間距分別為第1,3位參數(shù)的值;4位參數(shù)時第1,2,3,4為參數(shù)分別對應(yīng)上右下左方向的內(nèi)間距值 spad(10),上下左右內(nèi)間距都為10;spad(10,20),豎直方向內(nèi)間距10,水平方向20;spad(10,20,30),水平方向內(nèi)間距20,上10,下30;spad(10,20,30,40),上右下左方向的內(nèi)間距值分別為10,20,30,40
---------------- 外間距樣式方法部分 ----------------
smarT或smarTop 設(shè)置組件距離上面的距離為指定的數(shù)值 smarT(100),設(shè)置組件距離上面距離為100
smarB或smarBottom 設(shè)置組件距離下面的距離為指定的數(shù)值 和上面一樣
smarV或smarVertical 設(shè)置組件距離上下的距離為指定的數(shù)值 和上面一樣
smarL或smarLeft 設(shè)置組件距離左面的距離為指定的數(shù)值 和上面一樣
smarR或smarRight 設(shè)置組件距離右邊的距離為指定的數(shù)值 和上面一樣
smarH或smarHorizontal 設(shè)置組件距離左右的距離為指定的數(shù)值 和上面一樣
smar或smarAll 上下左右的外間距一起設(shè)置 和spad方法一樣
---------------- 絕對定位樣式方法部分 ----------------
sabsT或sabsTop 設(shè)置組件為絕對定位,并距離父組件頂部指定高度 sabs(10),組件絕對定位,并距離父組件頂部距離10
sabsB或sabsBottom 設(shè)置組件為絕對定位,并距離父組件底部指定高度 同上
sabsL或sabsLeft 設(shè)置組件為絕對定位,并距離父組件左邊指定寬度 同上
sabsR或sabsRight 設(shè)置組件為絕對定位,并距離父組件右邊指定寬度 同上
sabsAll 設(shè)置組件為絕對定位,并占滿整個父組件(沒有參數(shù)時),可以給出1到4個參數(shù)分別表示距離父組件的上右下左的距離 sabs(10,15,20,25),設(shè)置該組件為絕對定位,并占滿父組件后距離父組件上右下左距離分別為10,15,20,25
---------------- 相對定位樣式方法部分 ----------------
srelT或srelTop 設(shè)置組件為相對定位,并距離自身原本位置向上擠出指定的距離 srelT(100),組件相對定位,并距離自身原本位置向上擠出距離100
srelB或srelBottom 設(shè)置組件為相對定位,并距離自身原本位置向下擠出指定的距離 同上
srelL或srelLeft 設(shè)置組件為相對定位,并距離自身原本位置向左擠出指定的距離 同上
srelR或srelRight 設(shè)置組件為相對定位,并距離自身原本位置向右擠出指定的距離 同上
---------------- 絕對定位或相對定位時設(shè)置上下左右的距離 ----------------
sT或sTop sT(10)
sB或sBottom
sL或sL
sR或sRight
spos或sposition 上下左右一起設(shè)置 spos({t:100,b:70,l:50,r:80}),上線左右距離分別為100,70,50,80;可以只設(shè)置其中任意多個屬性spos({t:50,l:30})
---------------- 文字樣式方法部分 ----------------
sc或scolor 設(shè)置文字顏色為指定顏色 sc('#f90'),設(shè)置背景色為橙色
sfz或sfontSize 設(shè)置文字大小為指定大小 sfz(20),設(shè)置文字大小為20
slh或slineHeight 設(shè)置文字行高為指定高度 slh(40),設(shè)置文字行高為40
sff或sfontFamily 設(shè)置文字字體為指定字體 sff('PingFangSC-Light'),設(shè)置文字字體為'PingFangSC-Light'
stext 統(tǒng)一設(shè)置文字所有常用屬性,stext(大小,顏色,行高,字體,是否背景色透明(老版本文字有時會有默認背景色)) stext(20,'#fff',40,'PingFangSC-Light',true),設(shè)置字體大小20,顏色白色,行高40,字體PingFangSC-Light,背景色透明(老版本文字有時會有默認背景色),可以給出任一多個參數(shù),沒有給出的默認系統(tǒng)樣式
---------------- 其他常用樣式方法部分 ----------------
sop或sopacity 設(shè)置透明度為指定數(shù)值 sop(0.5),設(shè)置透明度為0.5
sbgc 設(shè)置背景色為指定的顏色 sbgc('#f90'),設(shè)置背景色為橙色

拓展與進階

樣式的重用

可能大家會想到樣式的重用性問題,可能一個樣式會用到多個View上,這也是沒有問題的.

在標(biāo)準(zhǔn)方法中的樣式重用

const styles=StyleSheet.create({
    container:{
        padding:15,
        width:Dimensions.get('window').width,
        backgroundColor:'#999',
        marginTop:100,
    },
})

<View style={[styles.container]}></View>

在插件中可以這樣用

let containerStyle=[sf.spad(15),sf.sw(s.w),s.bg999,sf.smarT(100)];

<View style={[containerStyle]}></View>

如果多個界面都想用到這個樣式的話,在侵入式等級1,2中可以直接

s.containerStyle=[sf.spad(15),sf.sw(s.w),s.bg999,sf.smarT(100)];

這樣在其他所有界面就可以這樣使用樣式了

<View style={[s.containerStyle]}></View>

添加新的自定義樣式

這里我只寫入了一些我常用到的樣式屬性和樣式方法,如果有一些你用到的常用的屬性或方法里面沒有的話也沒有關(guān)系,直接向其中加入就可以了.

在導(dǎo)入插件后,如果需要新增樣式屬性可以直接

s.center={justifyContent:'center',alignItems:'center'}

如果需要新增樣式方法可以直接

sf.sw=(w)=>{return {width:w}}

或者直接在插件源碼中增添,修改都是可行的方法.

(↓ˉ▽ˉ↓)

如果大家覺得我的組件好用的話,幫到你的話,歡迎大家Star,Fork,如果有什么問題的話也可以在github中想我提出,謝謝大家的支持.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砸泛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蛆封,更是在濱河造成了極大的恐慌,老刑警劉巖勾栗,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惨篱,死亡現(xiàn)場離奇詭異,居然都是意外死亡围俘,警方通過查閱死者的電腦和手機砸讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來界牡,“玉大人簿寂,你說我怎么就攤上這事∷尥觯” “怎么了常遂?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挽荠。 經(jīng)常有香客問我克胳,道長平绩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任漠另,我火速辦了婚禮捏雌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笆搓。我一直安慰自己性湿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布满败。 她就那樣靜靜地躺著肤频,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葫录。 梳的紋絲不亂的頭發(fā)上着裹,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天骇扇,我揣著相機與錄音少孝,去河邊找鬼稍走。 笑死婿脸,一個胖子當(dāng)著我的面吹牛柄驻,可吹牛的內(nèi)容都是我干的鸿脓。 我是一名探鬼主播野哭,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼拨黔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了城榛?” 一聲冷哼從身側(cè)響起狠持,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤甜刻,失蹤者是張志新(化名)和其女友劉穎正勒,沒想到半個月后章贞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸭限,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡败京,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年朴皆,在試婚紗的時候發(fā)現(xiàn)自己被綠了遂铡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶姊。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砍艾,靈堂內(nèi)的尸體忽然破棺而出巍举,到底是詐尸還是另有隱情,我是刑警寧澤梦皮,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站观堂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏溃睹。R本人自食惡果不足惜因篇,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一竞滓、第九天 我趴在偏房一處隱蔽的房頂上張望虽界。 院中可真熱鬧涛菠,春花似錦俗冻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新症。三九已至响禽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間界阁,已是汗流浹背胖喳。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工精续, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留重付,地道東北人确垫。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓删掀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搬瑰。 傳聞我的和親對象是個殘疾皇子泽论,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

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