webstorm

因为之前开发ReactNative的时候,选择了webstorm,这回转战Vue,自然还是用它。如果什么也不做的话,打开Vue工程,编辑区域基本上没有语法高亮。怎么办呢?

安装插件(以mac版本为例,window下面应该大同小异)

1. 打开偏好设置,从左边找到Plugins

2. 点击Browse repositories...,然后搜索Vue,进行安装

3. 添加Vue模板

<template>
</template> <script>
export default {
name: ''
}
</script> <style>
</style>

4. 重启webstorm,准备工作到此结束

项目结构

配置路由,根路径显示Login

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/modules/Login' Vue.use(Router) export default new Router({
routes: [
{
path: '/',
name: 'Login',
component: Login
}
]
})

编写Login.vue

先把代码贴一下,过程慢慢看

<template>

  <div id="container">
<div id="background-container">
<img src="../assets/bgd_login.jpg" id="background-image"/>
</div> <div id="main">
<div id="logo">
<img id="logo-img" src="../assets/logo.png">
</div> <div id="login">
<div class="form-input">
<span>
<i class="icon input-icon"></i>
</span>
<input class="input" placeholder="请输入用户名"/>
</div> <div class="form-input form-input-password">
<span>
<i class="icon input-icon"></i>
</span>
<input class="input" placeholder="请输入密码" type="password"/>
</div> <div id="setting">
<checkbox title="记住密码" :checked="remember_password" v-on:press="onPressRememberPassword"></checkbox>
</div> <div id="login-button">
<Button type="primary" size="large">登 录</Button>
</div> </div>
</div>
</div>
</template> <script>
import {Field, Button, Radio} from 'mint-ui';
import checkbox from '../components/checkbox.vue' export default {
name: 'login',
components: {
'v-input': Field,
Button,
checkbox,
},
data: function () {
return {
remember_password: false,
}
},
methods:{
onPressRememberPassword: function () {
this.remember_password = !this.remember_password;
}
}
}
</script> <style>
#container {
width: 100%;
height: 100%;
/*background-image: url("../assets/bgd_login.jpg") ;*/
} #background-container {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 0;
} #main {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 1;
background-color: transparent;
} #background-image {
width: 100%;
height: 100%;
z-index: 1; } #logo {
text-align: center;
vertical-align: center;
margin-top: 50px;
} #logo-img {
width: 100px;
height: 100px;
} .form-input {
background-color: white;
margin-top: 20px;
} .input-icon {
margin-left: 15px;
color: gray;
} .input {
background-color: transparent;
line-height: 60px;
border: none;
outline: none;
font-size: 16px;
color: white;
margin-left: 5px;
width: 70%;
} .form-input-password {
margin-top: 1px;
} #setting {
margin-top: 20px;
margin-left: 10px;
} #login-button {
margin-top: 55px;
padding: 0px 15px;
} </style>

过程1:怎么让一个图片作为背景颜色

iOS原生开发:

  方案1:图片作为view的backgroundcolor;

  方案2:一个UIImageView同时位于.subviews[0];

ReactNative开发:

  方案1:<Image>作为容器,将其他部分作为childrens;

  方案2:通过positon、zIndex将图片压到最底层;

Vue方案:

  方案1:作为div的背景图片,但是最后我没有解决图片的拉伸问题;

  方案2:将背景图单独一个div,其他内容单独一个div,然后通过zIndex压到最后

  

#main { /* 其他内容所在的div,包括输入框、忘记密码、登录按钮 */
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index:;
background-color: transparent;
} #background-image { /*背景图所在的div*/
width: 100%;
height: 100%;
z-index:;
}

过程2:输入框,怎么让input撑满剩余部分呢

在ReactNative里面,可以通过flex:1,让一个组件撑满,放到div/css里面,我就不知道怎么处理了。因为暂时不影响使用,只是简单的做了处理


<div class="form-input">
<span>
<i class="icon input-icon"></i>
</span>
<input class="input" placeholder="请输入用户名"/>
</div>
.input {
background-color: transparent;
line-height: 60px;
border: none;
outline: none;
font-size: 16px;
color: white;
margin-left: 5px;
width: 70%;
}

过程3:“记住密码”,能不能做个单独的组件,方便以后复用

<template>
<div @click="press">
<img class="comp-checkbox-icon" :src="iconImage">
<label class="comp-checkbox-title">{{title}}</label>
</div>
</template> <script>
export default {
name: 'checkbox',
props: ['title', 'checked'],
data: function () {
return { }
},
computed: {
iconImage: function () {
const icon = this.checked
? require('../components/images/checkbox_on.png')
: require('../components/images/checkbox_no.png');
return icon;
}
},
methods: {
press: function () {
this.$emit('press');
},
}
}
</script> <style>
.comp-checkbox-icon {
width: 20px;
height: 20px;
float: left;
} .comp-checkbox-title {
margin-left: 10px;
}
</style>

问题a. 如何让显示的文本,从父组件传过来显示呢?

(参照Vue:使用Prop传递数据)

问题b. 如何将点击事件交给父组件处理呢?

(参照Vue:使用v-on绑定自定义事件)

问题c. 如何判断显示的图片(选中/非选中)呢?

(答案:通过computed计算返回,同时对于img这种特殊的标签,应该用require进行返回)

问题d. 组件写好了,应该怎么用呢?

(答案:父组件里面,import引入,注册到components里,然后就可以使用了)

OK,UI部分到此结束,下面的“接口通信”,预知后事如何,待我娓娓道来

Vue学习记录-画页面的更多相关文章

  1. Vue学习记录第一篇——Vue入门基础

    前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...

  2. Vue学习记录-初探Vue

    写在开头 2017年,部门项目太多,而且出现了一个现象,即:希望既要有APP,也能够直接扫码使用,也能放到微信公众号里面. 从技术角度来说,APP我们可以选择原生开发,也可以选择ReactNative ...

  3. vue学习记录:vue引入,validator验证,数据信息,vuex数据共享

    最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <temp ...

  4. vue学习记录④(路由传参)

    通过上篇文章对路由的工作原理有了基本的了解,现在我们一起来学习路由是如何传递参数的,也就是带参数的跳转. 带参数的跳转,一般是两种方式: ①.a标签直接跳转. ②点击按钮,触发函数跳转. 在上篇文章中 ...

  5. Vue学习记录第一天

    今天开始了Vue的学习,下面我就记录一下学习了什么. 1.什么是Vue? vue是一套基于javaScript的渐进式框架,是MVVM框架.View ——ViewModel——Model  其中Vie ...

  6. [20190614]webpack+vue学习记录

    本文记录一些学习webpack+vue相关的知识点,方便以后查阅,添加或修改 1. 初始化vue项目的代码结构 build--项目依赖包配置信息 config--项目配置文件 dev.env.js-- ...

  7. vue学习记录⑤(组件通信-父与子)

    今天我们看一下组件通信. 经过前面几篇文章,我们已经可以构建出完整的单个组件,并利用路由使其串联起来访问了. 但这明显还是不够的.一个页面不可能就是个单组件,一般是由多个组件合成的.正因为如此,组件之 ...

  8. vue学习记录③(路由)

    上篇文章我们用vue-cli脚手架工具做了个简单的hello world页面,但是我们破坏了原来的流程,而正常的访问页面应该是通过路由来实现的. 那么什么是路由呢? 路由就是通过不同的url来访问不同 ...

  9. vue学习记录②(hello world!)

    接着上篇vue-cli脚手架构建项目结构建好项目之后,就开始写个“hello world!”吧~~~ vue玩的都是组件,所以开发的也是组件. 1.新建helloworld.vue.(删除Hello. ...

随机推荐

  1. apache 各种配置

    //apache 的网站配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf -->在编辑这个文件前需要去httpd.conf把这个文件的注释 ...

  2. Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法

    首先,错误报告存放位置: cd /var/crash/ ls //可以查看错误报告 1 2 sudo rm /var/crash/* //删除该目录下的所有文件 1 但是,这只是删除掉的是错误报告,如 ...

  3. u-boot中的Makefile

    在windos下,pc机上电之后,BIOS会初始化硬件配置,为内核传递参数,引导操作系统启动,并且识别C盘.D盘.等整个操作系统启动起来之后,才可以运行应用程序比如QQ.QQ音影.同理,在嵌入式Lin ...

  4. 使用 redis 减少 秒杀库存 超卖思路

    由于数据库查询的及插入的操作 耗费的实际时间要耗费比redis 要多, 导致 多人查询时库存有,但是实际插入数据库时却超卖 redis 会有效的减少相关的延时,对于并发量相对较少的 可以一用 publ ...

  5. Codefroces 919D Substring(拓扑排序+DP)

    题目链接:http://codeforces.com/problemset/problem/919/D 题目大意:给你一张有向图,给你每个顶点上的字母和一些边,让你找出一条路径,路径上的相同字母数最多 ...

  6. LightOJ 1370- Bi-shoe and Phi-shoe (欧拉函数)

    题目大意:一个竹竿长度为p,它的score值就是比p长度小且与且与p互质的数字总数,比如9有1,2,4,5,7,8这六个数那它的score就是6.给你T组数据,每组n个学生,每个学生都有一个幸运数字, ...

  7. C语言 五子棋2

    #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<conio.h> # ...

  8. Button Bashing(搜索)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAx8AAAI2CAIAAAC+EqK4AAAgAElEQVR4nOydf0BT9f7/37fS423mWn

  9. bootstrap使用前注意点和盒子模型

    bootstrap注意事项: https://getbootstrap.com/docs/4.0/getting-started/introduction/#quick-start 盒子模型: htt ...

  10. 阿里云ecs 服务器配置

    阿里云ecs 7.0+安装mysql 5.6 http://jingyan.baidu.com/article/454316ab67bd02f7a7c03af4.html 安装jdk yum -y i ...