从零开始写博客????
栏目: JavaScript · 发布时间: 5年前
内容简介:使用命令查看你的支持的目标浏览器3.bable 通过浏览器列表获得用户产品对于浏览器的支持程度,从而进行语法支持。该选项目前采用预设,因为你不确定最终构建时将使用到的垫片支持conf具有同等的配置
- 点击github主面板new按钮
- 仓库预设
- 给仓库加点料
- 创建本地仓库
- 创建忽略文件
.gitignore
以上都是废话,现在开始构建vue-cli3的项目。
- 初始化一个项目
- 选择配置
-
从第三步的 給仓库加点料 开始走一遍,当然你会发现
README.MD
和.gitignore
已经存在了,不要紧。因为上面写的都是废话。 -
按提示输入命令进入项目
- 访问本地运行项目
- 基本上你能看到如下页面
基本配置环节
- 根目录下创建 vue.config.js
- 配置目标浏览器支持列表,用于不同环境下的浏览器支持同步,在
package.json
中配置
使用命令查看你的支持的目标浏览器
npx browserslist 复制代码
3.bable 通过浏览器列表获得用户产品对于浏览器的支持程度,从而进行语法支持。该选项目前采用预设,因为你不确定最终构建时将使用到的垫片支持
- 使用现代模式 在
package.json
中添加现代模式
- 添加样式预处理器,我用less 因为sass安装麻烦,二者语法比较相像
npm install -D less-loader less 复制代码
- 根目录下创建全局变量配置文件
.env //基本全局变量 .env.devlopment //对应开发模式的全局变量 .env.production // 生产模式 复制代码
- 添加chain 和 conf的颗粒度控制文件
conf具有同等的配置
- 添加单元测试 mocha
vue add @vue/unit-mocha
- 添加mockjs 分离开发模拟数据在easy mock上编写你的mock
npm i -D mockjs
src目录下创建 mock.js
在项目根目录添加mocks文件夹
mock.js
- 添加 vuex, vue-router,axios等文件与配置
axios 在src目录下创建 api文件夹,加入index.js文件
import Axios from 'axios' const instance = Axios.create({ // baseURL: 'http://localhost:4560', headers: { // 'Content-Type': 'application/json', 'Content-Type':'application/x-www-form-urlencoded' } }) // 请求拦截 instance.interceptors.request.use(function (conf) { window.console.log(conf) return conf }, function (err) { window.console.log(err) return Promise.reject(err) }) // 响应拦截 instance.interceptors.response.use(res => { window.console.log(res) return res }, err => { window.console.log(err) return Promise.reject(err) }) export default { /* eslint-disable */ install(Vue, options) { Vue.prototype.$api = Object.create(null) Vue.prototype.$api.get = function(url, data){ return new Promise((resolve, reject) => { instance.get(url,data).then(res => { resolve(res) }).catch( err => { reject(err) } ) }) } } } 复制代码
在main.js使用 Vue.use(axios)挂载插件
创建src/routers/router.js
挂载vue-router
修改你的app.vue 并添加src/views/index.vue
app.vue
index.vue(主页面文件)
对于之前sass安装失败目前的解决方法是
npm install node-sass sass-loader scss-loader --save-dev
如果使用简写命令安装可能会报错,导致安装失败
编码环节
1. 在public文件夹下添加资源文件夹
├─fonts ├─icons ├─images ├─lib └─svg 复制代码
2. 在 styles 下添加各种scss文件,包括样式重置,兼容性,混入,变量,媒体查询等样式表
3. 在index.vue 页面划分页面结构
<template> <div class="index-container"> <!-- 左侧边栏 --> <left-side-bar class="left-sidebar__comp"> </left-side-bar> <!-- 右侧主体 --> <div class="content"> </div> </div> </template> <script> import SideBar from '@/components/LeftSidebar.vue'; export default { components:{ /* eslint-enable */ // eslint-disable-next-line "left-side-bar":SideBar, }, data(){ return {} }, methods:{ } } </script> <style lang="scss" scoped> .index-container{ display: flex; } .left-sidebar__comp{ background-color: $bg-cl; position: fixed; top:0; bottom: 0; left: 0; } .content{ width: 100%; min-height: 100vh; margin-left: $left-wd; } </style> 复制代码
采用组件的方式编写侧边栏 LeftSideBar.vue
<template> <div class="left-sidebar-container"> <div class="sidebar__top"> <div class="top__user-info"> <div class="user-info__left"> <img :src="user_face_url" alt class="user-info__left--user-face"> </div> <div class="user-info__content">dwadwa</div> <div class="user-info__tip">dwawd</div> </div> <div class="top__search"> <div class="search--bar"> <div class="search__btn--bar"> <img class="search__btn" src alt> </div> <div class="search__input--bar"> <input type="text" name id class="search__input"> </div> </div> </div> </div> <div class="sidebar__bottom"> <div class="sidebar__option"> <span class="option__btn" @click="option_btn = 0" :class="{'active':option_btn == 0}">卡片</span> <span class="option__btn" @click="option_btn = 1" :class="{'active':option_btn == 1}">时间线</span> </div> <div class="sidebar__cards" v-show="option_btn == 0"> <about-card v-if="cards['about-card']"></about-card> </div> <div class="sidebar__time" v-show="option_btn == 1">sidebar__time</div> </div> </div> </template> <script> import AboutCard from "@/components/AboutCard.vue"; export default { name: "side_bar", components: { "about-card": AboutCard }, data() { return { user_info: {}, option_btn: 0, cards: {} }; }, props: { user_face_url: { type: String, default: "https://secure.gravatar.com/avatar/3456813585?s=30&d=robohash" } }, methods: {}, created() { this.cards = { "about-card": true }; } }; </script> <style lang="scss" scoped> $base-height: $nav-height - $base-pd * 2; .left-sidebar-container { background-color: $bg-cl; position: relative; } .sidebar__top { min-height: $nav-height * 2; background-color: $bg-fff; } .top__user-info { display: flex; padding: $base-pd; .user-info__left { display: inline-block; height: $base-height; width: $base-height; } .user-info__content { flex: 2; } .user-info__tip { flex: 1; } * { line-height: 30px; } .user-info__left--user-face { display: inline-block; height: 100%; width: 100%; border-radius: 50%; } } .top__search { padding: $base-pd; .search--bar { background-color: $bg-cl; border-radius: ($base-height)/2; display: flex; overflow: hidden; } .search__btn--bar { width: $base-height; height: $base-height; } .search__input--bar { height: $base-height; width: 100%; display: inline-block; } .search__btn, .search__input { display: inline-block; height: 100%; width: 100%; line-height: $base-height; height: $base-height; box-sizing: border-box; border: none; padding: $base-pd 10px; background-color: $bg-cl; } } .sidebar__bottom { top: 80px; position: absolute; left: 0; right: 0; bottom: 0; margin-top: 1px; .sidebar__option { background-color: $bg-fff; height: $nav-height; display: flex; .active { border-bottom-color: $active-bg-b; } } .option__btn { line-height: $nav-height; border-bottom: 5px solid $bg-fff; text-align: center; display: inline-block; flex: 1; } } .sidebar__cards { position: absolute; top: $nav-height + 1px; left: 0; bottom: 0; right: 0; padding: $base-pd * 2; @include touch; } </style> <style lang="scss"> .sidebar__cards { .open-card { height: auto; } } </style> 复制代码
添加侧边栏的子组件
<template> <div class="about-card-container"> <!-- 大标题 --> <h1 class="card__head"> <span class="card__head--title"> 最近 </span> <span class="card__head--icon"> --- </span> </h1> <!-- 图片 --> <div class="about__photo--bar"> <div class="about__photo__overflow"> <div :class="'photo__item-' + (index + 1)" v-for="(item,index) in photo_list" :key="index"> <img src="" alt=""> </div> </div> </div> <!-- 留言 --> <div class="about__msg--bar"> <div class="msg__item"> <div class="msg__item--face"> <img src="" alt=""> </div> <div class="msg__item--title"> 飞啊飞肺癌共和国 </div> <div class="msg__item--time"> 12-24 </div> <div class="msg__item--describe"> feahnfejnahfeaghfgaheF ehgafjae风格哈格环境 </div> </div> <div class="msg__item"> <div class="msg__item--face"> <img src="" alt=""> </div> <div class="msg__item--title"> 飞啊飞肺癌共和国 </div> <div class="msg__item--time"> 12-24 </div> <div class="msg__item--describe"> feahnfejnahfeaghfgaheF ehgafjae风格哈格环境 </div> </div> </div> <div class="card__foolter"> <div class="foolter__btn"> 展开 <span class="foolter__btn--icon"></span> </div> </div> </div> </template> <script> export default { name:'about_card', data(){ return { photo_list:[] } }, methods:{ }, created(){ this.photo_list = [ 1,2,3,4,5 ] } } </script> <style lang="scss" scoped> .about-card-container{ padding-bottom: $base-pd * 2; padding: 0 ($base-pd * 2); background-color: $bg-fff; } .card__head{ display: flex; .card__head--title, .card__head--icon{ line-height: $nav-2; display: inline-block; flex: 1; } .card__head--title{ text-align: left; } .card__head--icon{ text-align: right; } } .about__photo--bar{ height: $left-wd / 2; position: relative; .about__photo__overflow{ width: $left-wd; position: absolute; top: 0; bottom: 0; left: - ($base-pd * 4); right:- ($base-pd * 4); background-color: $bg-fff; box-shadow: $base-shadow; display: grid; grid-gap: 0rem; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; grid-template-areas: "one two three" "one four five"; } div[class^="photo__item"]{ img{ display: inline-block; border: 1px solid $bg-fff; width: 100%; height: 100%; box-sizing: border-box; border: 1px solid red; } } .photo__item-1{ grid-area: one; } .photo__item-2{ grid-area: two; } .photo__item-3{ grid-area: three; } .photo__item-4{ grid-area: four; } .photo__item-5{ grid-area: five; } } .about__msg--bar{ .msg__item{ display: grid; grid-template-columns: $nav-height 3fr 1fr; grid-template-rows: ($nav-height/2) ($nav-height/2); grid-template-areas: "face title time" "face describe describe"; margin: $base-mg; } .msg__item--face{ grid-area: face; } .msg__item--title{ grid-area: title; } .msg__item--time{ grid-area: time; } .msg__item--describe{ grid-area: describe; } .msg__item--title, .msg__item--time, .msg__item--describe{ line-height: $nav-height / 2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .card__foolter{ padding: $base-pd $base-pd * 3; text-align: right; color: $active-bg-b; .foolter__btn{ line-height: $nav-height - $base-pd * 2; padding: 0 $base-pd * 2; display: inline-block; overflow: hidden; } .foolter__btn--icon{ width: $base-pd * 3; display: inline-block; height: $nav-height - $base-pd * 2; position: relative; vertical-align: middle; overflow: hidden; &::after{ content: ''; display: inline-block; box-sizing: border-box; border: 1px solid $active-bg-b; width: $base-pd * 2; height: $base-pd * 2; position: absolute; bottom: 52%; left: 55%; transform: rotateZ(45DEG); transform-origin: 0% 100%; } } } </style> 复制代码
目前的基本效果图
避免篇幅过长后面将不展示源码
4. 使用easy开发api和模拟数据
-
打开easy mock 添加账号
-
创建项目
- 点击创建接口,左侧注入灵魂,右侧加入接口配置
- 接下来编写 右侧主要内容区的nav组件,为组件添加动图 logo。
使用ps6 裁剪你要的图形大小,打开一个 80x60 的gif图
按enter应用裁剪
接下来使用 UGA5TBYB 压缩gif
其实就缩小了20k,但是gif占字节比较大,不得不优化,另外使用该软件可以合并精灵图
妈耶,累死了,暂时出到这里。什么时候有时间了再写吧。
以上所述就是小编给大家介绍的《从零开始写博客????》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 从今天开始,拿起VuePress打造属于自己的专属博客
- 开始起飞-golang编码技巧分享--Dave Cheney博客读后整理
- Django搭建个人博客:编写博客文章的Model模型
- MoguBlog(蘑菇博客) v5.3 发布,前后端分离博客系统
- IPC之—消息队列 - chan0311的博客 - 博客频道 - CSDN.NET
- 【单页面博客从前端到后端】基于 DVA+ANTD 搭建博客前后台界面
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Zen of CSS Design
Dave Shea、Molly E. Holzschlag / Peachpit Press / 2005-2-27 / USD 44.99
Proving once and for all that standards-compliant design does not equal dull design, this inspiring tome uses examples from the landmark CSS Zen Garden site as the foundation for discussions on how to......一起来看看 《The Zen of CSS Design》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
XML、JSON 在线转换
在线XML、JSON转换工具