107.《vue搭建项目的步骤》

搭建vue脚手架的步骤

创建脚手架

一路回车

vue init webpack testpro

安装依赖

npm install axios element-ui less less-loader --save

创建目录结构

在这里插入图片描述

reset.css

/*清除页面元素默认样式*/
*{
    padding: 0;
    margin: 0;
}
/* body,p,h1,h2,h3,h4,h5,h6,ol,ul,dl{
	margin: 0;
}
ol,ul,dd{
	padding: 0;
} */
input{
    outline: none;
}
ol,ul{
	/*取消列表元素前面的原点*/
    list-style: none; 
}
mark{
    background-color: none;
}
b,
strong{
    /*根据实际来清楚默认样式*/
    font-weight: normal;
}
i,
em{ 
    /*可根据实际来设置 */
    font-style: normal;
}
a{
	/*去掉a标签的下划线*/
    text-decoration: none;
    color: #333/* 颜色可根据实际设置 */
}

img{ /*容器有边框时的样式重置 */
    vertical-align: top;
	border: none;/*非标准的IE中,图片超链接中的图片默认会显示边框*/
}
button, input, textarea {
    background: none;
    border: none;
    font-family: inherit;
    vertical-align: middle;
}
    /* 左浮动 */
.fl{
    float: left;
}
    /* 右浮动 */
.fr{
    float: right;
}
.clearfix::after {
    content: "";
    display: block;
    clear: both;
}
.clearfix {
    *zoom: 1;
}

div,p,span,em,strong{
    line-height: 1;
} 

flexible.js

(function flexible(window, document) {
  var docEl = document.documentElement;
  var dpr = window.devicePixelRatio || 1;

  // adjust body font size
  function setBodyFontSize() {
    if (document.body) {
      document.body.style.fontSize = 12 * dpr + "px";
    } else {
      document.addEventListener("DOMContentLoaded", setBodyFontSize);
    }
  }
  setBodyFontSize();

  // set 1rem = viewWidth / 10   1920   1rem = 192   1920 / 24 =80   1rem = 80px
  function setRemUnit() {
    var rem = docEl.clientWidth / 24;
    docEl.style.fontSize = rem + "px";
  }

  setRemUnit();
  // reset rem unit on page resize
  window.addEventListener("resize", setRemUnit);
  window.addEventListener("pageshow", function(e) {
    if (e.persisted) {
      setRemUnit();
    }
  });

  // detect 0.5px supports
  if (dpr >= 2) {
    var fakeBody = document.createElement("body");
    var testElement = document.createElement("div");
    testElement.style.border = ".5px solid transparent";
    fakeBody.appendChild(testElement);
    docEl.appendChild(fakeBody);
    if (testElement.offsetHeight === 1) {
      docEl.classList.add("hairlines");
    }
    docEl.removeChild(fakeBody);
  }
})(window, document); 

route.js

route 记得在 main.js中 引入挂在

import Vue from "vue";
import Router from "vue-router";
Vue.use(Router)

// 登录
const  Login = ()=> import("../page/login")
const  layout = ()=> import("../page/layout")
const  Cate = ()=> import("../page/cate")
const  Cuxiao = ()=> import("../page/cuxiao")

const route = new Router({
    routes:[
        {
            path:"/",
            component: Login,
            meta: {
              title: '管理员登录'
            }
        },
        {
            path:"/layout",
            component: layout,
            redirect:"/cuxiao", 
            children:[
                {
                    path:"/cate",
                    component: Cate, 
                },
                {
                    path:"/cuxiao",
                    component: Cuxiao, 
                } 
            ]
        },
       
    ]
})
export default route

element.js

import Vue from 'vue';
import 'element-ui/lib/theme-chalk/index.css';
import {
    Pagination,
    Dialog,
    Autocomplete,
    Dropdown,
    DropdownMenu,
    DropdownItem,
    Menu,
    Submenu,
    MenuItem,
    MenuItemGroup,
    Input,
    InputNumber,
    Radio,
    RadioGroup,
    RadioButton,
    Checkbox,
    CheckboxButton,
    CheckboxGroup,
    Switch,
    Select,
    Option,
    OptionGroup,
    Button,
    ButtonGroup,
    Table,
    TableColumn,
    DatePicker,
    TimeSelect,
    TimePicker,
    Popover,
    Tooltip,
    Breadcrumb,
    BreadcrumbItem,
    Form,
    FormItem,
    Tabs,
    TabPane,
    Tag,
    Tree,
    Alert,
    Slider,
    Icon,
    Row,
    Col,
    Upload,
    Progress,
    Spinner,
    Badge,
    Card,
    Rate,
    Steps,
    Step,
    Carousel,
    CarouselItem,
    Collapse,
    CollapseItem,
    Cascader,
    ColorPicker,
    Transfer,
    Container,
    Header,
    Aside,
    Main,
    Footer,
    Timeline,
    TimelineItem,
    Link,
    Divider,
    Image,
    Calendar,
    Backtop,
    PageHeader,
    CascaderPanel,
    Loading,
    MessageBox,
    Message,
    Notification
  } from 'element-ui';
  
  Vue.use(Pagination);
  Vue.use(Dialog);
  Vue.use(Autocomplete);
  Vue.use(Dropdown);
  Vue.use(DropdownMenu);
  Vue.use(DropdownItem);
  Vue.use(Menu);
  Vue.use(Submenu);
  Vue.use(MenuItem);
  Vue.use(MenuItemGroup);
  Vue.use(Input);
  Vue.use(InputNumber);
  Vue.use(Radio);
  Vue.use(RadioGroup);
  Vue.use(RadioButton);
  Vue.use(Checkbox);
  Vue.use(CheckboxButton);
  Vue.use(CheckboxGroup);
  Vue.use(Switch);
  Vue.use(Select);
  Vue.use(Option);
  Vue.use(OptionGroup);
  Vue.use(Button);
  Vue.use(ButtonGroup);
  Vue.use(Table);
  Vue.use(TableColumn);
  Vue.use(DatePicker);
  Vue.use(TimeSelect);
  Vue.use(TimePicker);
  Vue.use(Popover);
  Vue.use(Tooltip);
  Vue.use(Breadcrumb);
  Vue.use(BreadcrumbItem);
  Vue.use(Form);
  Vue.use(FormItem);
  Vue.use(Tabs);
  Vue.use(TabPane);
  Vue.use(Tag);
  Vue.use(Tree);
  Vue.use(Alert);
  Vue.use(Slider);
  Vue.use(Icon);
  Vue.use(Row);
  Vue.use(Col);
  Vue.use(Upload);
  Vue.use(Progress);
  Vue.use(Spinner);
  Vue.use(Badge);
  Vue.use(Card);
  Vue.use(Rate);
  Vue.use(Steps);
  Vue.use(Step);
  Vue.use(Carousel);
  Vue.use(CarouselItem);
  Vue.use(Collapse);
  Vue.use(CollapseItem);
  Vue.use(Cascader);
  Vue.use(ColorPicker);
  Vue.use(Transfer);
  Vue.use(Container);
  Vue.use(Header);
  Vue.use(Aside);
  Vue.use(Main);
  Vue.use(Footer);
  Vue.use(Timeline);
  Vue.use(TimelineItem);
  Vue.use(Link);
  Vue.use(Divider);
  Vue.use(Image);
  Vue.use(Calendar);
  Vue.use(Backtop);
  Vue.use(PageHeader);
  Vue.use(CascaderPanel); 
  Vue.use(Loading.directive);
// 成功提示
Vue.prototype.$success = function (message) {
  Message({
    type: 'success',
    message
  });
}
// 错误提示
Vue.prototype.$error = function (message) {
  Message({
    type: 'error',
    message
  });
}

在这里插入图片描述

http.js

import axios from 'axios' 
// 请求拦截器
axios.interceptors.request.use(function (req) { 
    // 添加自定义请求头
    const userInfo =  sessionStorage.getItem('userinfo') || '{}'  
    // // 将登录凭证通过自定义请求头发送给数据接口 
    req.headers.authorization = userInfo.token
    return req
  })
 
// 添加响应拦截器
axios.interceptors.response.use( res => { 
    return res.data
  }
)

axios.defaults.baseURL='http://localhost:3000'
export default axios
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值