vue新手demo-踩坑

转自博客园: 如何搭建一个vue项目

一、安装node环境

1.下载地址为:https://nodejs.org/en/

2.检查是否安装成功:如果输出版本号,说明我们安装node环境成功

	node -v

	npm -v

在这里插入图片描述

3.为了提高我们的效率,可以使用淘宝的镜像:http://npm.taobao.org/

输入:

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

即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了。

检查是否安装成功:

	cnpm -v

在这里插入图片描述

二、搭建vue项目环境
 1.全局安装vue-cli

	npm install --global vue-cli

可能会安装不上,用下面的命令安装

	npm i -g @vue/cli-init

2.进入你的项目目录,创建一个基于 webpack 模板的新项目

	vue init webpack vue-demo

在这里插入图片描述

说明:
 Vue build ==> 打包方式,回车即可;
 Install vue-router ==> 是否要安装 vue-router,项目中肯定要使用到 所以Y 回车;
 Use ESLint to lint your code ==> 是否需要 js 语法检测 目前我们不需要 所以 n 回车;
 Set up unit tests ==> 是否安装 单元测试工具 目前我们不需要 所以 n 回车;
 Setup e2e tests with Nightwatch ==> 是否需要 端到端测试工具 目前我们不需要 所以 n 回车;

3.进入项目:cd vue-demo,安装依赖
在这里插入图片描述

安装成功后,项目文件夹中会多出一个目录: node_modules

4.启动项目

	npm run dev

项目启动成功:

在这里插入图片描述

访问:http://localhost:8080/#/
  在这里插入图片描述

三、Vue项目目录讲解

在这里插入图片描述
1、build:构建脚本目录

  • build.js ==> 生产环境构建脚本;
  • check-versions.js ==> 检查npm,node.js版本;
  • utils.js ==> 构建相关工具方法;
  • vue-loader.conf.js ==> 配置了css加载器以及编译css之后自动添加前缀;
  • webpack.base.conf.js ==> webpack基本配置;
  • webpack.dev.conf.js ==> webpack开发环境配置;
  • webpack.prod.conf.js ==> webpack生产环境配置;

2、config:项目配置

  • dev.env.js ==> 开发环境变量;
  • index.js ==> 项目配置文件;
  • prod.env.js ==> 生产环境变量;

3、node_modules:npm 加载的项目依赖模块

4、src:这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:

  • assets:资源目录,放置一些图片或者公共js、公共css。这里的资源会被webpack构建;

  • components:组件目录,我们写的组件就放在这个目录里面;

  • router:前端路由,我们需要配置的路由路径写在index.js里面;

  • App.vue:根组件;

  • main.js:入口js文件;

5、static:静态资源目录,如图片、字体等。不会被webpack构建。

6、index.html:首页入口文件,可以添加一些 meta 信息等。

7、package.json:npm包配置文件,定义了项目的npm脚本,依赖包等信息。

8、README.md:项目的说明文档,markdown 格式。

9、.xxxx文件:这些是一些配置文件,包括语法配置,git配置等。

四、开始第一个vue项目

ps:注意部分参数后、方法后、冒号后需跟空格。部分报错是没有加空格导致。

1、在components目录下新建一个views目录,里面写我们的vue组件First.vue。

在First.vue中:

<!--template 写 html,template下只能有一个div,其他是在div里面 -->
<template>
    <div class="first-app">
        {{msg}}
    </div>
</template>

<!-- script写 js -->
<script>
    export default {
        name: "First",
        data() {
            return{
                msg: "Welcome to FirstApp"
            }
        }
    }
</script>

<!-- style写样式 -->
<style>
</style>

在router->index.js中配置路由路径:

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
// 引入First组件
import First from '../components/views/First'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    // 配置First的路由
    {
      path: '/first',
      name: 'First',
      component: First
    }
  ]
})

访问:http://localhost:8080/#/first

在这里插入图片描述
2.组件引用

①.在components目录下新建sub文件夹,用于存放一下可以复用的子组件。比如新建一个Confirm.vue组件。

<template>
    <div>{{msg}}</div>
</template>

<script>
    export default {
        data () {
            return{
                msg: "Welcome to ConfirmApp"
            }
        }
    }
</script>

<style>
</style>

②.在父组件中引入子组件
在First.vue中

<!--template 写 html -->
<template>
    <div class="first-app">
        {{msg}}
        <Confirm></Confirm>
    </div>
</template>

<!-- script写 js -->
<script>
    // 引入 Confirm组件
    import Confirm from '../sub/Confirm'
    export default {
        name: "First",
        data () {
            return {
                msg: "Welcome to FirstApp"
            }
        },
        // 注册Confirm
        components: {
            Confirm
        }
    }
</script>

<!-- style写样式 -->
<style>
</style>

页面中调用了Confirm.vue组件
在这里插入图片描述
3.父子组件通信
父组件:First.vue
子组件:Confirm.vue

Confirm.vue

<template>
    <div class="Confirm-app">
        {{msg}}
        <button @click="getButtonClick">{{text}}</button>
    </div>
</template>

<script>
    export default {
        name: 'Confirm-app',
        // props 父组件传递给子组件的值
        props:['text'],
        data () {
            return{
                msg: "Welcome to ConfirmApp"
            }
        },
        methods: {
            getButtonClick() {
                // 触发当前实例上的事件。附加参数都会传给监听器回调。 
                // 向父组件传递对象msg的值
                this.$emit('message',this.msg);
            }
        }
    }
</script>

<style>
</style>

First.vue

<!--template 写 html -->
<template>
    <div class="first-app">
        {{msg}}
        <Confirm text="注册" @message="getMessage"></Confirm>
    </div>
</template>

<!-- script写 js -->
<script>
    // 引入 Confirm组件
    import Confirm from '../sub/Confirm'
    export default {
        name: "First",
        data () {
            return {
                msg: "Welcome to FirstApp"
            }
        },
        // 注册Confirm
        components: {
            Confirm
        },
        methods: {
            // val由子组件传递给父组件的值
            getMessage(val){
                alert(val);
            }
        }
    }
</script>

<!-- style写样式 -->
<style>
</style>

再次访问:http://localhost:8080/#/first
点击【注册】,提示获取到子组件Confirm.vue的msg值。
可以看见按钮的值是First.vue组件中text的值:

<Confirm text="注册" @message="getMessage"></Confirm>

在这里插入图片描述

4.使用路由搭建单页应用。
①.在views文件夹创建Second.vue组件;

<template>
    <div>Welcome to SecondApp
        <br />
        <p><router-link to="/first">去第一个页面</router-link></p>
    </div>
</template>

<script>
</script>

<style>
</style>


②.在router->index.js中引入Second组件并配置路由;

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
// 引入First组件
import First from '../components/views/First'

// 引入Second组件
import Second from '../components/views/Second'
Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    // 配置First的路由
    {
      path: '/first',
      name: 'First',
      component: First
    },
    // 配置Second的路由
    {
       path: '/second',
       name: 'Second',
       component: Second
    }
  ]
})

③.在First.vue组件的div中添加跳转页面的代码。

 <p><router-link to="/second">去第二个页面</router-link></p>

在这里插入图片描述
点击【去第二个页面】,跳转:

在这里插入图片描述
----- End -----

扩展:
Vue官方地址:https://router.vuejs.org/zh-cn/

Git地址:https://github.com/123ac/Vue-demo

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页