zoukankan      html  css  js  c++  java
  • Vue创建SPA那些事

    如上图所示,创建一个基于webpack模板的新项目。

    在命令行输入:vue init webpack projectName。

    然后就按步骤输入一些信息,比如项目名、项目描述、配置文件之类。

    项目名先随便起一个,我想试试看,我创建项目成功后,更改项目名会不会像用VS创建MVC项目那样有影响(果然会有影响!)。

    完成后生成这样的目录结构:

    目录解析

    目录/文件说明
    build 最终发布的代码存放位置。
    config 配置目录,包括端口号等。我们初学可以使用默认的。
    node_modules npm 加载的项目依赖模块
    src

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

    • assets: 放置一些图片,如logo等。
    • components: 目录里面放了一个组件文件,可以不用。
    • App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。
    • main.js: 项目的核心文件。
    static 静态资源目录,如图片、字体等。
    test 初始测试目录,可删除
    .xxxx文件 这些是一些配置文件,包括语法配置,git配置等。
    index.html 首页入口文件,你可以添加一些 meta 信息或同统计代码啥的。
    package.json 项目配置文件。
    README.md 项目的说明文档,markdown 格式

    再安装依赖:node_modules

    CMD进入该项目文件夹,输入 npm install。第一张图实际已经给好了提示,To get started,有三件事要做:

    cd 项目名 - 进入项目文件夹

    npm install -  在这里等了大概...分钟(挂了。考虑用淘宝镜像。后记:麻蛋的,没事别用cnpm,各种坑。后面产生了一堆问题。把这个smart镜像卸载了,use方法找不到的问题解决。)

    npm run dev - 测试环境是否搭建成功

     用淘宝镜像 cnpm,也有一些坑:

    http://www.uedbox.com/npm-install-slow-solution/

    安装:npm install --global smart-npm --registry=https://registry.npm.taobao.org/
    卸载:    
    npm smart uninstall   # 2.x.x 版本的 smart-npm 在卸载前需要先执行此脚本
    npm uninstall --global smart-npm
    Mac 或者 Linux 用户可使用下面命令恢复之前备份的 npm
    mv $(which npm-original) $(dirname $(which npm-original))/npm

     安装完成后,发现依旧使用 npm run dev 命令来运行环境:

    发现地址栏后面有个 # 号。待研究。

    https://router.vuejs.org/zh-cn/essentials/history-mode.html

     babel:(根据实际情况,考虑兼容问题,可不装) 具体看这个文章:http://2ality.com/2017/02/babel-preset-env.html

    这个是用来自动转换ES6到ES5的。用WebStorm自带的File Watcher功能+Babel实现自动转换ECMAScript 6代码为ES5代码。

    在node_modules 下找不到babel.cmd文件。

    如图,标记2的地方,这里选择当前项目下 - node_modules - .bin - babel.cmd

    可以全局安装babel。但是最好别这样,因为这样项目就对全局的环境产生了依赖,当换到别的环境时,可能就会出问题。而且这样也不能根据不同的项目选择不同的版本。

    安装本地项目的babel: CMD: npm install --save-dev babel-cli

    装完后,更改package.json:

    原本的scripts: "build": "node build/build.js",

    更改后的:

    "scripts": {
        "build": "babel src -d lib"
      },
    这样改了以后 npm run build 打包的方式会变成这样:可能不是自己需要的

    安装Babel的preset以正确识别ES6代码:

    npm install --save-dev babel-preset-es2015

    webstorm - File watcher - program:

    $FilePathRelativeToProjectRoot$ --out-dir dist --source-maps --presets env

    改成:

    $FilePathRelativeToProjectRoot$ --out-dir dist --source-maps --presets=es2015

    转码的时候,就执行下面的命令:  npm run build

    ------------------------------

    vue-resource 可以基于全局的Vue对象使用http,也可以基于某个Vue实例使用http。

    安装vue-resource:npm install vue-resource --save

    用法:

    // 基于全局Vue对象使用http
    Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);
    Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
     
    // 在一个Vue实例内使用$http
    this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);
    this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

    在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数,第二个参数是响应失败时的回调函数。

    then方法的回调函数的两种写法:

    // 传统写法
    this.$http.get('/someUrl', [options]).then(function(response){
      // 响应成功回调
    }, function(response){
      // 响应错误回调
    });
     
     
    // Lambda写法
    this.$http.get('/someUrl', [options]).then((response) => {
      // 响应成功回调
    }, (response) => {
      // 响应错误回调
    });

    安装完成后,可以看到package.json文件下,依赖变成了这样:

      "dependencies": {
        "vue": "^2.5.2",
        "vue-resource": "^1.3.4",
        "vue-router": "^3.0.1"
      },

    有时候好奇怪,为什么我创建一个项目,会遇到这么多问题。

    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'    找不到这个module。@是vue模板设置的别名。

     把npm smart 镜像卸载,重新在这个项目文件夹下运行 npm install,这个问题解决。

    还有如下问题:

    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_moduleschokidar ode_modulesfsevents): (可忽略,fsevents是MAC OSX 系统的。npm install --no-optional 执行这个忽视)
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) (可忽略,同上)
    npm WARN karma-sinon-chai@1.3.2 requires a peer of sinon@^2.1.0 but none was installed.

    不匹配的依赖: sinon@4.0.2  嗯,要重新下个sinon@2.1.0版本的。然而装完后,后面提示 invalid,哎先不管。

    npm install sinon@2.1.0

    -------------------------------------------------

    webstorm 在使用v-on/bind等指令时候,警告namespace unbound ....  这个可以在 setting - editor - inspections - xml - UNbound XML namespace prefix 勾选去掉

  • 相关阅读:
    newgrp
    netstat
    netlink, PF_NETLINK
    netdevice
    mv
    mplayer
    mpg123
    MOVE
    motd
    more
  • 原文地址:https://www.cnblogs.com/dodocie/p/7714908.html
Copyright © 2011-2022 走看看