vue實戰|vue項目搭建及基本配置

前言

注:適用于windows系統
本文講述要點:

  1. vue-cli項目搭建基本環境配置;
  2. 常用插件描述及分享;
  3. 項目運行、調試及打包;
  4. 項目配置及優化;


適用人群:

  1. vue小白;
  2. 有html\css\js編程基礎;
  3. vue項目整體優化(打包后壓縮空間);

一、準備階段

準備階段會將項目環境配置完畢,包含nodenpmwebpackvue-cli。已經完成的小伙伴可以跳過此步驟看第二階段。

1.安裝nodenpm

??從node.js中文網下載并安裝nodejs點擊下載.msi的32/64位安裝包,然后雙擊本地文件一路點擊下一步完成nodeJs的安裝即可。<font size=2 color=#ff6666>注意安裝8.10以上版本喲!</font>
安裝完成后,打開命令行工具,輸入node -v,如下:

E:\>node -v
v8.12.0     //版本號

順便在此處繼續輸入npm -v

E:\>npm -v
6.4.1       //版本號

你會驚訝的發現npm已經神奇的安裝完成了。這是因為npm在安裝nodeJs的時候順帶已經裝好了。

2.安裝webpack

注:以下所有npm操作,由于國內速度較慢甚至出現失敗,可用淘寶鏡像cnpm替代。下列所有npm命令,用cnpm替代即可。方式如下:

npm install -g cnpm --registry=https://registry.npm.taobao.org

??繼續剛才的命令行工具,輸入npm install webpack -g-g代表全局安裝。安裝完成后繼續輸入webpack -v,出現相應版本號,代表安裝成功。
我在安裝時出現如下狀況:

One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
 - webpack-cli (https://github.com/webpack/webpack-cli)
   The original webpack full-featured CLI.
We will use "npm" to install the CLI via "npm install -D".
Do you want to install 'webpack-cli' (yes/no):

解決方案是:輸入npm install webpack-cli -g。安裝成功后執行webpack -v查看版本號,如下:

E:\>npm install  webpack-cli -g
*
*  安
*  裝                省
*  過                略
*  程
*

E:\>webpack -v
4.29.6  //版本號
3.安裝vue腳手架vue-cli

??繼續上面的命令行工具。接下來就是安裝配置今天的主角了,vue腳手架工具vue-cli。方法一樣,鍵入命令行npm install vue-cli -g全局安裝,然后輸入vue -V<font size=1 color=red>注:是大寫的-V</font>檢測是否安裝成功。如下:

E:\>vue -V
2.9.6       //版本號
4.小結

??至此,我們已經完成了準備階段的工作。主要完成的是nodenpmwebpackvue-cli四個工具的環境配置。目前為止,我們在命令行工具的總結應該是如下:版本號不必一致

E:\>node -v
v8.12.0

E:\>npm -v
6.4.1

E:\>webpack -v
4.29.6

E:\>vue -V
2.9.6

二、項目搭建

本階段講述vue-cli項目搭建及相關配置,包含創建項目修改基礎配置項目運行三個模塊,可自行選擇閱讀或跳過。

1.項目創建

??建立一個空文件夾,最好以純英文命名。例,我項目路徑為E>stydy。打開命令行工具,cd到該文件目錄下,執行vue init webpack namename可替換為你要創建的項目名。回車之后,會要求輸入一系列的信息,大部分可直接回車略過,注釋如下,沒有注釋的回車略過即可:

E:\stydy>vue init webpack blog

? Project name blog //項目名
? Project description A Vue.js project  //項目簡介
? Author xuan0146 <zxm0146@163.com> //作者
? Vue build runtime
? Install vue-router? Yes   //使用項目路由
? Use ESLint to lint your code? No  //不開啟ESLint語法檢測 注意選No
? Set up unit tests Yes
? Pick a test runner jest
? Setup e2e tests with Nightwatch? Yes
? Should we run `npm install` for you after the project has been created? (recommended) npm

   vue-cli · Generated "blog".

最后一步選擇npm或者yarn則會自動執行npm install安裝項目所有依賴包。不選擇的話,自己安裝也是同樣效果。安裝步驟為:

  1. cd到項目路徑;
  2. 執行npm install
  3. 等待完成安裝即可;
2.項目介紹

??cd到該項目,或者打開文件夾,項目目錄及備注如下:

├── project //項目目錄
│  ├── build    //webpack相關配置
│  │  ├── build.js  //生產環境構建
│  │  ├── check-versions.js //版本檢查
│  │  ├── utils.js  //構建相關工具
│  │  ├── vue-loader.conf.js    //處理vue文件的配置信息
│  │  ├── webpack.base.conf.js  //webpack基礎配置
│  │  ├── webpack.dev.conf.js   //webpack開發環境配置
│  │  ├── webpack.prod.conf.js  //webpack生產環境配置
│  ├── config   //vue基本配置
│  │  ├── dev.env.js    //開發環境配置
│  │  ├── index.js  //主要配置
│  │  ├── prod.env.js   //生產環境配置
│  │  ├── test.env.js   //測試環境配置
│  ├── node_modules //依賴包 忽略
│  ├── src  //項目核心文件
│  │  ├── assets    //靜態資源 如公用js\css\image\媒體資源等
│  │  ├── components    //公用組件
│  │  ├── router    //項目路由
│  │  │  ├── index.js   //路由控制文件
│  │  ├── App.vue   //根組件
│  │  ├── main.js   //入口文件
│  ├── static   //靜態資源
│  ├── test //模擬測試
│  ├── .babelrc //babel參數
│  ├── .editorconfig    //代碼格式
│  ├── .gitignore   //git上傳相關配置
│  ├── .postcssrc.js    //css相關工具
│  ├── index.html   //主頁
│  ├── package-lock.json    //記錄當前狀態下實際安裝的各個npm package的具體來源和版本號
│  ├── package.json //項目信息
│  ├── README.md    //項目說明
3.啟動項目

??命令行工具鍵入npm run dev,等待片刻,直到提示如下,則表示啟動成功:

E:\stydy\blog>npm run dev

* * * * * * * *
* 啟動過程忽略 *
* * * * * * * *

Your application is running here: http://localhost:8080

然后復制http://localhost:8080,在瀏覽器地址欄輸入該url,進入如下頁面:

vue運行成功.png

4.移動端調試

??有的人可能要問了,如果我做移動端項目,不能用localhost去訪問了吧?當然不能,只需要稍微改一下配置即可。當然,端口號8080一樣可以修改,不過一般不做變動。
??用代碼工具(自己習慣的IDE)打開本項目。首先查看本機電腦ip,鍵入命令ipconfig,查看如下:

E:\stydy\blog>ipconfig
* *
* *
以太網適配器 以太網:

   連接特定的 DNS 后綴 . . . . . . . :
   本地鏈接 IPv6 地址. . . . . . . . : fe80::da7:800d:d148:e06%10
   IPv4 地址 . . . . . . . . . . . . : 192.168.200.127
   子網掩碼  . . . . . . . . . . . . : 255.255.255.0
   默認網關. . . . . . . . . . . . . : fe80::48:5112:9520:564f%10
                                       192.168.200.1                                       

??其中,IPv4 地址即為我們所需要的ip。在項目/config/index.js中,找到host: 'localhost',改成IPv4 地址,例:我的地址為192.168.200.127:

module.exports = {
  dev: {
    host: '192.168.200.127',    //localhost改為ip
    port: 8080,     //端口號
  }
}

??然后,我們重新啟動項目。注意上次項目啟動后,由于修改了配置文件,因此需要停止項目然后重新啟動。停止項目的命令為Ctrl + C。重啟項目后,如下:

E:\stydy\blog>npm run dev
* * * * * * * *
* 啟 動 過 程 *
* * * * * * * *
Your application is running here: http://192.168.200.127:8080

??(注意要在同一網絡下。)
??最后,我們復制該地址,即可在所有端PC手機pad等查看該項目啦~


三、常用插件

本章節記錄一些vue常用插件,如axiosechartssass/scsslib-flexible等等。所有命令均可用cnpm替代。如不需要可直接跳過。、

1.sacc/scss

用途:可用sass/scss進行css書寫代碼。命令行工具依次鍵入如下命令:

npm install node-sass --save-dev
npm install sass-loader --save-dev

安裝完成后,.vue里的style里添加lang="scss"來指定語言,即可用sass/scss編寫css代碼。如下:

<style lang="scss" scoped>
...
</style>
2.axios

用途:平時前后端交互使用Ajax,在vue官方,給出vue-resourceaxios的作為ajax的替代。在此處使用vue官方推薦首選的axios作為案例講述。

  • 安裝
npm install axios
  • 全局引入
    項目/src/main.js中引入如下代碼,然后隨意走個請求,發現……報錯?并且在頁面F12控制臺Newwork>Headers里面發現數據并沒有Form Data形式提交,如何處理呢?見下一步解決。
import axios from 'axios'
  • 解決數據格式問題
//完整請求代碼  post為例
this.$axios.post('url', {   //路徑
  key1: 'value',        //參數
  key2: 'value'     //參數
}, 

/* *
* 添加如下代碼
* * * * * * start * * * * * 
{
  transformRequest: [function (data) {
    let ret = '';
    for (let it in data) {
      ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
    }
    return ret
    }
  ],
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
}
/* * * * * * end * * * * *

).then((response) => {  //返回數據
  console.log(response)
}).catch((error) => {   //請求異常捕捉
  console.log(error)
})
3.axios解決方案

??另外一個axios數據格式問題的解決方案。 重磅推薦★★★★★此方案不僅解決數據格式問題,還順便解決了跨域問題。第一步當然還是安裝axios,同上一步。然后,安裝qs,命令行工具鍵入npm install qs --save-dev。然后在項目/src/main.js中配置如下:

import axios from 'axios'
import qs from 'qs' 

Vue.prototype.$axios = axios;
Vue.prototype.$qs = qs;

然后在項目/config/index.js中,找到proxyTable,配置及說明如下:

proxyTable: {
  '/api': {
    //設置url公用部分
    target: 'http://192.168.1.100:8080/',   
    changeOrigin: true,   // 如果接口跨域,需要進行這個參數配置
    pathRewrite: {
      '^/api': ''      //這里理解成用‘/api’代替target里面的地址
    }
  }
},

配置完成之后,在.vue文件中,請求用例如下:

//參數
let params = this.$qs.stringify({
  key: value
});
//請求
this.$axios.post('/api/test', params).then((response) => {
  console.log(response);
}).catch((error) => {
  console.log(error);
})

最后,鍵入命令npm run dev,發現請求數據格式已經成為Form Data的格式,并且即使后端不處理跨域問題,也依然正常可用。原因是proxy作為中間層,先將數據請求回本地,此過程是中間層node請求后臺,不存在跨域。然后請求過來的數據放在本地,前端再去請求這個數據,就可以解決跨域問題了。

4.echarts可視化

??如今相信大家不少項目需要用到數據可視化吧?各種統計圖表、炫酷可視化效果等等,都需要一個不錯的插件去支撐,比如D3AnyChartechartsHighCharts等等。本案例用百度的echarts作為案例講解。

  • 安裝依賴
    慣例,先裝依賴。命令行工具執行npm install echarts --save-dev
  • 全局配置
    安裝完成后,全局引入。引入方法:進入項目/src/main.js,如下操作:
import echarts from 'echarts'

Vue.prototype.$echarts = echarts
  • 使用
    ***.vue組件中即可正常使用。我在此處用Hello.vue寫示例:
//template
<div id="demo"></div>

//script
let myChart = this.$echarts.init(document.getElementById('demo')); //初始化
//myChart.clear();  //根據需求配置
myChart.setOption({ // 圖表配置
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [{
    data: [820, 932, 901, 934, 1290, 1330, 1320],
    type: 'line',
    smooth: true
  }]
});

//style
#demo{
  width: 500px;
  height: 500px;
}
  • 效果圖


    echartsDemo.png
  • 按需引入
    試過之后會發現echarts的包很大,會導致打包之后文件過大,因此如果不是剛需的情況下,建議按需引入來完成頁面,會節省許多資源及開銷。首先,將剛才項目/src/main.js中的兩行代碼注釋掉。接下來,依然以Hello.vue舉例,如下:

//template && style 不作變動

//script
const echarts = require('echarts/lib/echarts'); //基本模板
require('echarts/lib/chart/line');  //折線圖組件
require('echarts/lib/component/title'); //標題組件

 // 初始化實例
let myChart = echarts.init(document.getElementById('demo'));
// 圖表配置
myChart.setOption({
  title: { text: '引入title組件可使用標題' },
  * * * * * * * *
  * 別的配置不變 *
  * * * * * * * *
});
5.lib-flexible | px2rem-loader

??lib-flexible作用在于寫頁面的時候實現自適應效果,包括文圖排本等。需要配合px2rem-loader使用。步驟如下:

  • 安裝依賴
npm i lib-flexible --save-dev

npm install px2rem-loader --save-dev
  • 引入
    項目/src/main.js中做如下配置:
import 'lib-flexible
  • 主頁添加視口配置
    項目/index.html中的head中添加:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • px2rem配置
    項目/build/utils.js中如下配置,然后重啟項目即可:
//自適應字體配置
const px2remLoader = {
  loader: 'px2rem-loader',
  options: {
    remUnit: 37.5   //設計稿的寬度除以 10,現階段一般設計稿的寬度都為750px。如果基于iPhone5設計則為32.0(320 / 10 = 32)
  }
}

function generateLoaders (loader, loaderOptions) {
  const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

  * * *
}
  • 更多關于px2rem的介紹請移步官網

四、項目打包

本章節介紹打包以及去除打包后資源中的.map文件。
開發完成后,怎么打包到線上呢?emm...this is a problem.

1.打包

命令行工具cd到該項目下,執行npm run build來構建項目:

E:\stydy\blog>npm run build

                                                  Asset       Size  Chunks                    Chunk Names
               static/js/vendor.38756a8637fc194013f9.js     442 kB       0  [emitted]  [big]  vendor
                  static/js/app.0b5326236ed4caddb252.js     1.1 kB       1  [emitted]         app
             static/js/manifest.2ae2e69a05c33dfc65f8.js  857 bytes       2  [emitted]         manifest
    static/css/app.26e0081e2c66d97635076ad7fefbb5b6.css  164 bytes       1  [emitted]         app
static/css/app.26e0081e2c66d97635076ad7fefbb5b6.css.map  348 bytes          [emitted]
           static/js/vendor.38756a8637fc194013f9.js.map    2.38 MB       0  [emitted]         vendor
              static/js/app.0b5326236ed4caddb252.js.map    8.47 kB       1  [emitted]         app
         static/js/manifest.2ae2e69a05c33dfc65f8.js.map    4.97 kB       2  [emitted]         manifest
                                             index.html  571 bytes          [emitted]

  Build complete.
2.位置

打包完成后,去哪兒了呢?然后會發現在項目路徑下,出現了一個dist的文件夾,這里面就是所謂的*** 包 ***了。如下:

├── project 
│  ├── build    
│  ├── config   
│  ├── dist     // 包    
│  │  ├── static    // 壓縮后的資源
│  │  ├── index.html    // 主頁
│  ├── node_modules 
│  ├── src  
│  ├── static   
│  ├── test 
│  ├── .babelrc 
│  ├── .editorconfig    
│  ├── .gitignore   
│  ├── .postcssrc.js    
│  ├── index.html   
│  ├── package-lock.json    
│  ├── package.json 
│  ├── README.md    
3.問題&解決

細心的你可能發現了,dist/static/css(或js)里面,每個css文件和js文件下有一個同名的.map文件,非常占空間,那它是做什么的呢?又怎么消除呢?

  • 作用
    查過資料的小伙伴知道了,.map文件的作用就是:項目打包后,代碼都是經過壓縮加密的,如果運行時報錯,輸出的錯誤信息無法準確得知是哪里的代碼報錯。有了map就可以像未加密的代碼一樣,準確的輸出是哪一行哪一列有錯。
  • 如何解決
    那么該如何處理這些文件呢?進入項目/config/index.js,定位到productionSourceMap,將其值改為false即可。如下:
productionSourceMap: false,
  • 重新打包驗證
    在命令行工具重新執行npm run build,發現.map文件已經消失,問題解決。如下:
E:\stydy\blog>npm run build

                                              Asset       Size  Chunks                    Chunk Names
           static/js/vendor.38756a8637fc194013f9.js     442 kB       0  [emitted]  [big]  vendor
              static/js/app.3c96ecd23cc6dc073a3e.js    1.05 kB       1  [emitted]         app
         static/js/manifest.2ae2e69a05c33dfc65f8.js  799 bytes       2  [emitted]         manifest
static/css/app.26e0081e2c66d97635076ad7fefbb5b6.css   95 bytes       1  [emitted]         app
                                         index.html  571 bytes          [emitted]

  Build complete.

五、包優化

??在項目逐漸壯大之后,雖然說上面已經講述過了如何去除.map文件,但是其中許多.js文件的體積也不容小覷。尤其是發布到線上以后,某些css/js單個文件體積極可能超上兆的大小,如果項目服務器帶寬不夠,但是頁面迸發量不低的話,分分鐘就可能掛掉。有沒有什么方法能進一步將包優化呢?

1.gzip打包壓縮
  • 安裝gzip
    慣例,打開命令行工具,安裝gzip
npm install compression-webpack-plugin@1.1.11 --save-dev
  • 配置
    項目/config/index.js中,定位到productionGzip,改為true
productionGzip: true,
  • 重新打包
    npm run build走起,會發現打包的文件中多了同名的.gz文件,體積大概壓縮了2/3,很棒的體驗。如下:
E:\stydy\blog>npm run build

                                              Asset       Size  Chunks                    Chunk Names
           static/js/vendor.38756a8637fc194013f9.js     442 kB       0  [emitted]  [big]  vendor
              static/js/app.3c96ecd23cc6dc073a3e.js    1.05 kB       1  [emitted]         app
         static/js/manifest.2ae2e69a05c33dfc65f8.js  799 bytes       2  [emitted]         manifest
static/css/app.26e0081e2c66d97635076ad7fefbb5b6.css   95 bytes       1  [emitted]         app
                                         index.html  571 bytes          [emitted]
        static/js/vendor.38756a8637fc194013f9.js.gz     155 kB          [emitted]

  Build complete.
  • nginx配置
    雖然很給力的節省了許多資源,但是需要運維配合,在gninx.conf配置文件中做如下配置:
http {  
  gzip on;
  gzip_disable "msie6"; 
  gzip_vary on; 
  gzip_proxied any;
  gzip_comp_level 8;  //壓縮級別
  gzip_buffers 16 8k;
  #gzip_http_version 1.1;
  gzip_min_length 100; //不壓縮臨界值
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
2.采用cdn加速

??顧名思義,即將一些比較大的插件放在第三方服務器上去加載,這樣不僅快很多,也能更加節約自己的服務器資源及寬帶資源。我們一般選用unpkg或者BootCDN來作為第三方。在此處我們使用BootCDN來作為第三方加速使用。想了解更多相關知識請點擊unpkg BootCDN

  • 查找包
    打開BootCDN,在搜索欄搜索想要的第三方資源。如,我想要替換的是echartsVueaxios,則依次搜索echarts...,然后查找我想要的版本,然后復制<script>標簽
  • 插入
    項目/index.html中將標簽插入,如下:
<body>
<div id="app"></div>
//插入在這里
<script src="https://cdn.bootcss.com/vue/2.5.20/vue.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts-en.common.js"></script>
<script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.js"></script>
</body>
  • webpack配置
    打開項目/build/webpack.base.conf.js中,添加externals:
module.exports = {
  context: path.resolve(__dirname, '../'),
  //..  
  externals:{
    'vue': 'Vue',
    'vue-router': 'VueRouter',
    'echarts':'echarts',
    'axios':'axios',
  }

}
  • main配置
    打開項目/src/main.js,將Vue等注釋掉即可。不注釋也可。
// import Vue from 'vue'
  • 打包
    最后,見證奇跡的時刻就要到了~
E:\stydy\blog>npm run build

                                              Asset       Size  Chunks             Chunk Names
           static/js/vendor.1f9d0533037be66c61cf.js    12.3 kB       0  [emitted]  vendor
              static/js/app.912fd568ff845fde7c09.js    1.36 kB       1  [emitted]  app
         static/js/manifest.2ae2e69a05c33dfc65f8.js  799 bytes       2  [emitted]  manifest
static/css/app.edc64bd802cdc531977a30fcc8a9d6e1.css   62 bytes       1  [emitted]  app
                                         index.html  876 bytes          [emitted]
        static/js/vendor.1f9d0533037be66c61cf.js.gz    4.62 kB          [emitted]

  Build complete.
  • 搞定
    上次打包,vendor大小為442kB,本次打包,瘋狂縮小至12.3kB。神不神奇厲不厲害

結語

??到這里,vue項目從環境配置、項目搭建,到結構介紹、常用插件依賴安裝使用做了比較詳細的介紹,最后將項目優化也做了一定的補充。
??學而時習之,溫故而知新。至此,以上。
歡迎做客我的博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374