vue2.5開發(fā)去哪兒網(wǎng)App學(xué)習(xí)筆記

這篇文章單純關(guān)于 學(xué)習(xí)教學(xué)視頻《vue2.5開發(fā)去哪兒網(wǎng)App》做記錄,并且是直接來到項(xiàng)目預(yù)熱章節(jié)距糖,本地已安裝node與npm颓芭,文章里有很多內(nèi)容是學(xué)習(xí)過程中進(jìn)行查閱學(xué)習(xí)的記錄,因此這是一篇主要關(guān)于構(gòu)建與工具的記錄局待,關(guān)于vue的學(xué)習(xí)知識僅保留在本地

使用github管理本地代碼版本,使用git

  1. 生成本地公鑰與私鑰,并獲取公用密鑰
ssh-keygen -t rsa -C 'yourName@xxx.com'
cat ~/.ssh/id_rsa.pub
  1. github里添加公鑰钳榨,將本機(jī)公鑰加入公鑰設(shè)置里舰罚,實(shí)現(xiàn)本地與github無需帳號密碼同步


    add new SSH key
  2. 執(zhí)行ssh -T git@github.com 卻出現(xiàn)報錯:ssh_exchange_identification: read: Connection reset by peer

  3. 執(zhí)行ssh git@github.com -vT 打印出:

OpenSSH_7.3p1, OpenSSL 1.0.2h 3 May 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [13.229.188.59] port 22.
debug1: Connection established.
debug1: identity file /c/Users/admin/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /c/Users/admin/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.3
ssh_exchange_identification: read: Connection reset by peer

查詢ip 13.229.188.59確實(shí)為github地址,并不存在劫持
通過git上該文章https://help.github.com/en/articles/using-ssh-over-the-https-port解決問題
可能會有人跟我一樣沒有config文件重绷,在.ssh文件夾下手動創(chuàng)建吧沸停,沒文件類型哈,文件夾路徑為C:\用戶\admin.ssh

  1. 執(zhí)行 git clone 下圖拿到的ssh地址克隆到本地
    clone
  2. 在本地拉下來的工程里安裝vue腳手架昭卓,執(zhí)行命令npm install -g vue-cli愤钾,具體可查閱vue-cli對應(yīng)的vpm網(wǎng)址
  3. 去到工程的上一級(比如現(xiàn)在的文件夾是travel,那就回到上一級)候醒,執(zhí)行vue init webpack travel
  4. 回到工程目錄能颁,執(zhí)行npm run dev,會構(gòu)建一個本地服務(wù)器倒淫,復(fù)制地址到瀏覽器訪問伙菊,到這里項(xiàng)目搭建完成
  5. 同步到github倉庫上,執(zhí)行git status會列出現(xiàn)在與之前不一致的文件
  6. 執(zhí)行git add .把這些文件添加到git的緩沖區(qū)上
  7. 執(zhí)行git commit -m 'project initialized'
  8. 執(zhí)行git push把代碼同步到github倉庫上
  9. 當(dāng)其他終端克隆該項(xiàng)目時敌土,因?yàn)閚ode-modules并不會上傳到github镜硕,需要手動下載,在該文件夾下執(zhí)行npm install即可

所有生成文件的簡要說明

readme文件 -- 是對項(xiàng)目的簡要說明文件
package.json -- 第三方模塊依賴
package-lock.json -- package的索引文件返干,幫助我們確認(rèn)一些第三方依賴的版本(不過我做的時候沒生成該文件出來)
LICENSE -- 開源協(xié)議說明
index.html -- 默認(rèn)首頁模板文件
postcsssrc.js -- postcss配置項(xiàng)
gitignore -- 上傳到git的文件管理兴枯,用來管理哪些文件需要上傳哪些不上傳
eslintrc.js -- 檢測代碼規(guī)范
eslintignore -- 哪些文件不會被eslintre檢測
editorconfig -- 編輯器里的一些語法配置
babelre -- 語法解析器,對vue的語法進(jìn)行一些轉(zhuǎn)換矩欠,讓瀏覽器編譯執(zhí)行
static文件夾 -- 放靜態(tài)資源财剖,比如靜態(tài)圖片,json數(shù)據(jù)等
node_modeules -- 第三方依賴包

src -- 整個項(xiàng)目的源代碼

  • main.js -- 項(xiàng)目的入口文件
  • app.vue -- 項(xiàng)目最原始的根組件
  • router-index.js -- 項(xiàng)目所有路由
  • compontents -- 項(xiàng)目用的組件
  • assets -- 項(xiàng)目圖片

config -- 整個項(xiàng)目的配置文件

  • dev.env.js -- 開發(fā)環(huán)境的配置信息
  • index.js -- 基礎(chǔ)配置信息
  • prod_env.js -- 線上環(huán)境的配置信息

bulid -- 整個項(xiàng)目的webpack打包配置內(nèi)容(一般不需要修改癌淮,所以也不需要太關(guān)注)

  • webpack.base.conf.js -- 基礎(chǔ)的webpack配置項(xiàng)
  • webpack.dev.conf.js -- 開發(fā)環(huán)境的webpack配置項(xiàng)
  • webpack.prod.conf.js -- 線上環(huán)境環(huán)境的webpack配置項(xiàng)

多頁應(yīng)用 vs 單頁應(yīng)用

多頁應(yīng)用

單頁應(yīng)用

安裝flexible 與 px2rem

由于項(xiàng)目是移動端躺坟,因此像視頻一樣手動計算rem是不現(xiàn)實(shí)的,因此需要添加這兩個庫來幫助我們計算

  1. 下載安裝flexible
npm i lib-flexible --save-dev
  1. 在main.js里引入lib-flexible
import 'lib-flexible/flexible'
  1. 安裝px2rem loader
npm install px2rem-loader --save-dev
  1. 在build文件中找到util.js乳蓄,將px2rem-loader添加到cssLoaders中:
    // 增加px2remLoader
    const px2remLoader = {
        loader: 'px2rem-loader',
        options: {
            remUnit: 75,
            baseDpr: 2
        }
    }

    // 這個是為了給全局添加輔助函數(shù)咪橙,這樣就不需要每個文件都去 @import '~style/fn.styl'
    const stylusOption = {
        // 要導(dǎo)入全局的文件
        import:[
            path.join(__dirname, "../src/assets/style/fn.styl")
        ],
        // 全局的路徑
        paths:[
            path.join(__dirname, "../src/assets/style/"),
            path.join(__dirname, "../")
        ]
    }

    function generateLoaders(loader, loaderOptions) {
        // 修改loaders規(guī)則
        const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

        if (loader) {
            loaders.push({
                loader: loader + '-loader',
                options: Object.assign({}, loaderOptions, {
                    sourceMap: options.sourceMap
                })
            })
        }

        // Extract CSS when that option is specified
        // (which is the case during production build)
        if (options.extract) {
            return ExtractTextPlugin.extract({
                use: loaders,
                fallback: 'vue-style-loader'
            })
        } else {
            return ['vue-style-loader'].concat(loaders)
        }
    }

    // https://vue-loader.vuejs.org/en/configurations/extract-css.html
    return {
        css: generateLoaders(),
        postcss: generateLoaders(),
        less: generateLoaders('less'),
        sass: generateLoaders('sass', { indentedSyntax: true }),
        scss: generateLoaders('sass'),
        stylus: generateLoaders('stylus', stylusOption),
        styl: generateLoaders('stylus', stylusOption)
    }

這里補(bǔ)充一下,對到px2rem虚倒,使用的時候會對所有px單位都進(jìn)行rem轉(zhuǎn)換計算匣摘,但對到某些如同邊框,字體這些裹刮,有些時候我們并不希望轉(zhuǎn)化為rem,那么這時需要使用下面兩個技巧:

  • 在px后面添加/*no*/庞瘸,不會轉(zhuǎn)化px捧弃,會原樣輸出。(邊框,圓角等)
  • 在px后面添加/*px*/,會根據(jù)dpr的不同违霞,生成三套代碼嘴办。(字體上可以使用)
    如果是使用stylus的同學(xué),記得加 “;” 號买鸽,否則還是會編譯為rem涧郊,有興趣的同學(xué)也可以自行看起github上的項(xiàng)目
    傳送門:px2rem地址
    傳送門:stylus中文文檔

對于路徑填寫較長的,可以自定義關(guān)鍵字來決定眼五。通過更改添加 bulid 中的 webpack.base.conf 中的 alias鍵值來增加更改指定路徑妆艘,就像threejs中的loader類,有一個.setPath()看幼,可以指定對應(yīng)下載資源的基本路徑路徑一樣

alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      //以后路徑就不需要用各種./../或@來指定路徑批旺,可以直接跑到指定文件夾去
      'style': resolve('src/assets/style'),
      'js': resolve('src/assets/js')
}

//在某個styl里需要用到 fn.styl,則可以使用下面這樣
@import '~style/fn.styl'

github上創(chuàng)建分支及合并分支

公司級別的操作一般是需要通過分支合并到主線里來實(shí)現(xiàn)代碼管理的诵姜,公司用的是hg汽煮,所以一直也沒了解過這些,這次通過學(xué)習(xí)來記錄一下如何通過github上實(shí)現(xiàn)分支的管理合并


創(chuàng)建分支

上圖我已經(jīng)新建了一個index-swiper的分支棚唆,如果還需要新建其他分支暇赤,只需要在這里輸入分支的名稱,點(diǎn)擊下面的create即可宵凌,分支創(chuàng)建好后需要同步拉取到本地

  1. 執(zhí)行git pull拉取線上分支
  2. 執(zhí)行git checkout index-swiper將本地分支設(shè)置為index-swiper
  3. 可以通過git status來查看本地當(dāng)前分支

切換到分支后便是開發(fā)需求功能
開發(fā)的過程中由于沒像視頻里一樣直接拿的線上圖片鞋囊,訪問靜態(tài)資源,發(fā)現(xiàn)別名在data中無法被編譯

swiperList: [
    {
        'imgUrl': "@img/swiper_1.jpg",
        'id': "swiper_1"
    },{
        'imgUrl': "@img/swiper_2.jpg",
        'id': "swiper_2"
    },{
        'imgUrl': "@img/swiper_3.jpg",
        'id': "swiper_3"
    }
]

解決的辦法有幾個摆寄,其中覺得比較實(shí)用的是require失暴,代碼更改如下:

swiperList: [
    {
        'imgUrl': require("@img/swiper_1.jpg"),
        'id': "swiper_1"
    },{
        'imgUrl': require("@img/swiper_2.jpg"),
        'id': "swiper_2"
    },{
        'imgUrl': require("@img/swiper_3.jpg"),
        'id': "swiper_3"
    }
]

對到使用background背景圖要使用別名,除了需要使用~微饥,還要記得url里需要帶上雙引號:

.icon
    display: inline-block
    width: 33px;/*no*/
    height: 33px;/*no*/
    background-image: url("~@img/entrances.png")
    background-size: 374px 130px;/*no*/
    background-repeat: no-repeat

還有個做法但是我webpack還沒學(xué)逗扒,跟著整一直編譯報錯,先做個記錄:
vue webpack 打包處理stylus中圖片的路徑問題


當(dāng)開發(fā)完后欠橘,需要將自己的分支提交到github上矩肩,由管理員審核后合并到主線中,操作步驟如下:

  1. 執(zhí)行git add .把這些文件添加到git的緩沖區(qū)上
  2. 執(zhí)行git commit -m 'change'將暫存區(qū)里的改動提交到本地的版本庫肃续,簡要說明為change
  3. 如果你的git沒有設(shè)置郵箱名稱黍檩,這個時候會提示讓你輸入你的郵箱與名稱,執(zhí)行
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
  4. 重新執(zhí)行git commit -m 'change'始锚,這個時候就會顯示出本次更改變化的所有文件
  5. 執(zhí)行git push把代碼同步到github倉庫上(分支上)
  6. 執(zhí)行git checkout master重新切換到master主線上
  7. 執(zhí)行git merge origin/index-swiper刽酱,將index-swiper分支合并到主線上
  8. 執(zhí)行git push把代碼同步到github倉庫上

由于我重新申請了github帳號(之前帳號是瞎填的),需要把本地項(xiàng)目重新推到新的帳號倉庫上瞧捌,查閱很多都不行棵里,還是簡書的非復(fù)制粘貼靠譜润文。如果也有同樣需求的童鞋可以參考 fatal: remote origin already exists.解決方法


static目錄是唯一可以被外部訪問的目錄,因此需要被外部可訪問的文件都可以放在static目錄下(忽然想起之前在stylus背景使用別名一直報錯殿怜,有找到一種說把圖片放在static目錄里典蝌,大概就是這原因吧)
當(dāng)不需要把文件提交到github上,則需要在gitignore中添加對應(yīng)的目錄路徑static/mock头谜,這樣就不會把本地模擬數(shù)據(jù)提交到遠(yuǎn)程倉庫上骏掀,也不會保存到本地git倉庫里
當(dāng)需要請求走代理的時候,webpack提供了一個proxyTable的屬性柱告,在config目錄下的index.js截驮,更改proxyTable

    proxyTable: {
      '/api': {  //請求api目錄的時候
        target: 'http://localhost:8080',  // 依然是本地路徑8080端口
        pathRewrite: {
          '^/api': "/static/mock"  //請求是api開頭的目錄的時候,轉(zhuǎn)發(fā)到/static/mock文件目錄里
        }
      }
    }

這里有個小問題需要注意末荐,如果拿到的json文件格式有問題侧纯,那么webpack會自動返回成字符串類型,因此當(dāng)拿到的結(jié)果不是對象的形式甲脏,那需要去檢查一下本地的json是否書寫有誤(因?yàn)槲揖褪嵌嗔藗€逗號結(jié)果拿不到數(shù)值)

對到多組件間的傳值眶熬,除了bus總線,還能使用vuex块请,當(dāng)然查閱文檔的時候發(fā)現(xiàn)娜氏,如果不是大型單頁應(yīng)用其實(shí)也可以不使用vuex,可以使用 store狀態(tài)管理墩新,唯一不方便的是調(diào)試贸弥,因此共享狀態(tài)不多的情況下簡單的使用store也是一個不錯的選擇

var store = {
  debug: true,
  state: {
    message: 'Hello!'
  },
  setMessageAction (newValue) {
    if (this.debug) console.log('setMessageAction triggered with', newValue)
    this.state.message = newValue
  },
  clearMessageAction () {
    if (this.debug) console.log('clearMessageAction triggered')
    this.state.message = ''
  }
}

教學(xué)視頻畢竟是入門級,很多沒說海渊,還是得看官方文檔绵疲,包括寫進(jìn)計算屬性里呀,使用mapState啊等等臣疑,這些就不做記錄了

當(dāng)使用全局事件的時候盔憨,要記得解綁

    // 這里對到為什么使用keep-alive,而不是常規(guī)的mounted感到不解讯沈,也沒說為何
    activated () {
        // 全局事件綁定郁岩,需要注意解綁
        window.addEventListener('scroll', this.handleScroll)
    },
    deactivated () {
        window.removeEventListener('scroll', this.handleScroll)
    }

組件的遞歸調(diào)用,說是個難點(diǎn)…沒看出難點(diǎn)也沒看出啥亮點(diǎn)缺狠,留著做記錄问慎,估計組件遞歸也就這種做固定的

<template>
    <div class="detail-lsit">
        <div class="item"
            v-for="(item, index) of list"
            :key="index">
            <div class="item-title">
                <h3 class="title">{{item.title}}</h3>
            </div>
           <!-- 如果還有children繼續(xù)賦值調(diào)用組件 -->
            <div v-if="item.children"
                class="second-item">
                <detail-list :list="item.children"></detail-list>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    name: 'DetailList',
    props: {
        list: Array
    }
}
</script>

<style lang="stylus" scoped>
    .item
        &:nth-child(n+2)
            border-top: 1px solid #ececec
    .item-title
        line-height: 60px
        font-size: 12px;/*no*/
        padding: 0 20px
    .title
        &::before
            content: ''
            display: inline-block
            width: 18px;/*no*/
            height: 18px;/*no*/
            margin-right: 10px
            vertical-align: -12%
            background: url("~@img/ticket.png") no-repeat center / cover
    .second-item
        padding-left: 20px
</style>

對到最后章節(jié),如果需要請求其他端口的json配置挤茄,可以使用 http-server(個人就是直接用的http-server)

  1. 安裝http-servernpm i http-server -g
  2. 開啟非8080端口 http-server -p 80如叼,這樣就在該文件夾下啟動了80端口的服務(wù)器(我說的該文件夾,是指你放api/***json的文件夾)
  3. 更改config下的index.js文件
proxyTable: {
      '/api': {  //請求api目錄的時候
        /* 本地調(diào)試請求轉(zhuǎn)發(fā) */
        // target: 'http://localhost:8080',  // 依然是本地路徑8080端口
        // pathRewrite: {
        //   '^/api': "/static/mock"  //請求是api開頭的目錄的時候穷劈,轉(zhuǎn)發(fā)到/static/mock文件目錄里
        // }

        /* 本地聯(lián)調(diào)薇正,使用了http-server */
        target: "http://localhost"
      }
    },

webpack-dev-server默認(rèn)不支持ip訪問片酝,如果需要直接訪問ip地址,則需要更改package.json文件中對webpack-dev-server的配置定義(由于是json格式挖腰,復(fù)制代碼記得手動去除注釋)

  "scripts": {
    /* webpack-dev-server 默認(rèn)不支持ip直接訪問,要通過ip訪問需要webpack-dev-server添加 --host 0.0.0.0 */
    "dev": "webpack-dev-server --host 0.0.0.0 --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "lint": "eslint --ext .js,.vue src",
    "build": "node build/build.js"
  },

對到真機(jī)白屏练湿,有可能是因?yàn)椴恢С諩S6新特性猴仑,需要安裝babel-polyfill

  1. travel文件夾下運(yùn)行 npm i babel-polyfill --save
  2. main.js中引入bable-polyfill import 'babel-polyfill'

課程到這里完整結(jié)束,后面的章節(jié)沒什么必要記筆記就沒寫了肥哎,包括項(xiàng)目上線辽俗,箭頭函數(shù)異步加載那些都是比較基礎(chǔ)的。接下來會學(xué)習(xí)webpack篡诽,加油崖飘!


首頁

補(bǔ)充一下,對到視頻里每次都去github上創(chuàng)建分支杈女,本地pull的方法實(shí)在煩朱浴,好在學(xué)習(xí)webpack之后現(xiàn)在我不需要這么做了,按照我的流程來即可达椰,你完全可以先開發(fā)代碼再來創(chuàng)建分支:

  1. 執(zhí)行git checkout -b branchName創(chuàng)建名為branchName的分支翰蠢,并跳到當(dāng)前branchName分支上
  2. 執(zhí)行git add .將本次修改加入緩沖區(qū)
  3. 執(zhí)行git commit -m "description"把文件提交到本地倉庫,描述為description
  4. 執(zhí)行git push --set-upstream origin branchName將本地分支提交到遠(yuǎn)程倉庫
    這個時候你再上github上看啰劲,會發(fā)現(xiàn)多了一條branchName的分支梁沧,文件也提交上來了,這樣蝇裤,就不用重復(fù)視頻創(chuàng)建分支廷支,git pull,git checkout
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栓辜,一起剝皮案震驚了整個濱河市恋拍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啃憎,老刑警劉巖芝囤,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辛萍,居然都是意外死亡悯姊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門贩毕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悯许,“玉大人,你說我怎么就攤上這事辉阶∠群荆” “怎么了瘩扼?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垃僚。 經(jīng)常有香客問我集绰,道長,這世上最難降的妖魔是什么谆棺? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任栽燕,我火速辦了婚禮,結(jié)果婚禮上改淑,老公的妹妹穿的比我還像新娘碍岔。我一直安慰自己,他們只是感情好朵夏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布蔼啦。 她就那樣靜靜地躺著,像睡著了一般仰猖。 火紅的嫁衣襯著肌膚如雪捏肢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天亮元,我揣著相機(jī)與錄音猛计,去河邊找鬼。 笑死爆捞,一個胖子當(dāng)著我的面吹牛奉瘤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煮甥,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼盗温,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了成肘?” 一聲冷哼從身側(cè)響起卖局,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎双霍,沒想到半個月后砚偶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洒闸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年染坯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丘逸。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡单鹿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出深纲,到底是詐尸還是另有隱情仲锄,我是刑警寧澤劲妙,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站儒喊,受9級特大地震影響镣奋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怀愧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一唆途、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掸驱,春花似錦、人聲如沸没佑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛤奢。三九已至鬼癣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啤贩,已是汗流浹背待秃。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痹屹,地道東北人章郁。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像志衍,于是被迫代替她去往敵國和親暖庄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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