文章目录

  • (硅谷课堂项目)Java开发笔记4:前端基础知识(二)
    • 一、NPM
      • 1、NPM简介
        • 1.1、什么是NPM
        • 1.2、NPM工具的安装位置
      • 2、使用npm管理项目
        • 2.1、创建文件夹npm
        • 2.2、项目初始化
        • 2.3、修改npm镜像
        • 2.4、npm install命令的使用
        • 2.5、其它命令
    • 二、模块化开发(一)
      • 1、模块化简介
        • 1.1、模块化产生的背景
        • 1.2、什么是模块化开发
      • 2、ES5模块化
        • 2.1、创建“module”文件夹
        • 2.2、导出模块
        • 2.3、导入模块
        • 2.4、运行程序
    • 三、模块化开发(二)
      • 1、ES6模块化写法(一)
        • 1.1、导出模块
        • 1.2、导入模块
        • 1.3、安装Babel
        • 1.4、配置.babelrc
        • 1.5、安装转码器
        • 1.6、转码
        • 1.7、运行程序
      • 2、ES6模块化写法(二)
        • 2.1、导出模块
        • 2.2、导入模块
        • 2.3、转码
        • 2.4、运行程序
    • 四、搭建项目前端环境
      • 1、vue-admin-template模板
      • 2、搭建环境
      • 3、修改登录功能
        • 3.1、创建登录接口
        • 3.2、修改登录前端
        • (1)修改接口路径
        • (2)修改js文件
    • 五、跨域问题
      • 1、什么是跨域
      • 2、配置

(硅谷课堂项目)Java开发笔记4:前端基础知识(二)

一、NPM

1、NPM简介

1.1、什么是NPM

NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的;也是Node.js的包管理工具,相当于前端的Maven 。

1.2、NPM工具的安装位置

我们通过npm 可以很方便地下载js库,管理前端工程。

Node.js默认安装的npm包和工具的位置:Node.js目录\node_modules

  • 在这个目录下你可以看见 npm目录,npm本身就是被NPM包管理器管理的一个工具,说明 Node.js已经集成了npm工具
#在命令提示符输入 npm -v 可查看当前npm版本
npm -v

2、使用npm管理项目

2.1、创建文件夹npm
2.2、项目初始化
#建立一个空文件夹,在命令提示符进入该文件夹  执行命令初始化
npm init
#按照提示输入相关信息,如果是用默认值则直接回车即可。
#name: 项目名称
#version: 项目版本号
#description: 项目描述
#keywords: {Array}关键词,便于用户搜索到我们的项目
#最后会生成package.json文件,这个是包的配置文件,相当于maven的pom.xml
#我们之后也可以根据需要进行修改。
#如果想直接生成 package.json 文件,那么可以使用命令
npm init -y
2.3、修改npm镜像

NPM官方的管理的包都是从 http://npmjs.com下载的,但是这个网站在国内速度很慢。

这里推荐使用淘宝 NPM 镜像 http://npm.taobao.org/ ,淘宝 NPM 镜像是一个完整 npmjs.com 镜像,同步频率目前为 10分钟一次,以保证尽量与官方服务同步。

设置镜像地址:

#经过下面的配置,以后所有的 npm install 都会经过淘宝的镜像地址下载
npm config set registry https://registry.npm.taobao.org
#查看npm配置信息
npm config list
2.4、npm install命令的使用
#使用 npm install 安装依赖包的最新版,
#模块安装的位置:项目目录\node_modules
#安装会自动在项目目录下添加 package-lock.json文件,这个文件帮助锁定安装包的版本
#同时package.json 文件中,依赖包会被添加到dependencies节点下,类似maven中的 <dependencies>
npm install jquery
#npm管理的项目在备份和传输的时候一般不携带node_modules文件夹
npm install #根据package.json中的配置下载依赖,初始化项目
#如果安装时想指定特定的版本
npm install jquery@2.1.x
# 局部安装
#devDependencies节点:开发时的依赖包,项目打包到生产环境的时候不包含的依赖
#使用 -D参数将依赖添加到devDependencies节点
npm install --save-dev eslint
#或
npm install -D eslint
#全局安装
#Node.js全局安装的npm包和工具的位置:用户目录\AppData\Roaming\npm\node_modules
#一些命令行工具常使用全局安装的方式
npm install -g webpack--global
2.5、其它命令
#更新包(更新到最新版本)
npm update 包名
#全局更新
npm update -g 包名
#卸载包
npm uninstall 包名
#全局卸载
npm uninstall -g 包名

二、模块化开发(一)

1、模块化简介

1.1、模块化产生的背景

随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。

Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。

但是,Javascript不是一种模块化编程语言,它不支持"类"(class),包(package)等概念,更遑论"模块"(module)了。

1.2、什么是模块化开发

传统非模块化开发有如下的缺点:

  • 命名冲突
  • 文件依赖

模块化规范:

  • CommonJS模块化规范
  • ES6模块化规范

2、ES5模块化

每个文件就是一个模块,有自己作用域。在一个文件里定义的变量、函数、类,都是私有的,对其他文件不可见。

2.1、创建“module”文件夹
2.2、导出模块

创建 common-js模块化.js

// 定义成员:
const sum = function(a,b){return parseInt(a) + parseInt(b)
}
const subtract = function(a,b){return parseInt(a) - parseInt(b)
}

导出模块中的成员

// 导出成员:
module.exports = {sum: sum,subtract: subtract
}

简写

//简写
module.exports = {sum,subtract
}

完整js文件:

// 定义成员:
const sum = function(a,b){return parseInt(a) + parseInt(b)
}
const subtract = function(a,b){return parseInt(a) - parseInt(b)
}// 导出成员:
module.exports = {sum: sum,subtract: subtract
}// //简写
// module.exports = {//     sum,
//     subtract
// }
2.3、导入模块

创建引入模块.js

//引入模块,注意:当前路径必须写 ./
const m = require('./四则运算.js')
console.log(m)
const result1 = m.sum(1, 2)
const result2 = m.subtract(1, 2)
console.log(result1, result2)
2.4、运行程序
node 引入模块.js

CommonJS使用 exports 和require 来导出、导入模块。

运行结果:

三、模块化开发(二)

1、ES6模块化写法(一)

ES6使用 export 和 import 来导出、导入模块。

1.1、导出模块

创建 src/userApi.js

export function getList() {console.log('获取数据列表')
}
export function save() {console.log('保存数据')
}
1.2、导入模块

创建 src/userComponent.js

//只取需要的方法即可,多个方法用逗号分隔
import { getList, save } from "./userApi.js"
getList()
save()

注意:这时程序无法运行,因为ES6的模块化无法在Node.js中执行,需要用Babel编辑成ES5后再执行。

1.3、安装Babel

Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行执行

安装命令行转码工具

Babel提供babel-cli工具,用于命令行转码。它的安装命令如下:

npm install --global babel-cli
#查看是否安装成功
babel --version
1.4、配置.babelrc

Babel的配置文件是.babelrc,存放在项目的根目录下,该文件用来设置转码规则和插件,presets字段设定转码规则,将es2015规则加入 .babelrc:

创建.babelrc文件:

{"presets": ["es2015"],"plugins": []
}
1.5、安装转码器

在项目中安装

npm install --save-dev babel-preset-es2015
1.6、转码
# 整个目录转码
mkdir dist1
# --out-dir 或 -d 参数指定输出目录
babel src -d dist1
1.7、运行程序
node dist1/userComponent.js

2、ES6模块化写法(二)

2.1、导出模块

创建 es6/userApi2.js

export default {getList() {console.log('获取数据列表2')},save() {console.log('保存数据2')}
}
2.2、导入模块

创建 es6/userComponent2.js

import user from "./userApi2.js"
user.getList()
user.save()
2.3、转码
# 整个目录转码
mkdir dist2
# --out-dir 或 -d 参数指定输出目录
babel es6 -d dist2
2.4、运行程序
node dist2/userComponent2.js

四、搭建项目前端环境

1、vue-admin-template模板

vue-admin-template是基于vue-element-admin的一套后台管理系统基础模板(最少精简版),可作为模板进行二次开发。

GitHub地址:https://github.com/PanJiaChen/vue-admin-template

2、搭建环境

# 解压压缩包
# 进入目录
cd vue-admin-template-master# 安装依赖
npm install# 启动。执行后,浏览器自动弹出并访问http://localhost:9528/
npm run dev

3、修改登录功能

3.1、创建登录接口

创建LoginController

package com.gerrard.olclass.vod.controller;import com.gerrard.olclass.result.Result;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.Map;@RestController
@RequestMapping("admin/vod/user")
//@CrossOrigin
public class LoginController {@PostMapping("login")public Result login(){Map<String,Object> map=new HashMap<>();//查看模板未改返回的数据,按照返回数据格式用后端来造数据map.put("token","admin");return Result.ok(map);}//info@GetMapping("info")public Result info() {//{"code":20000,"data":// {"roles":["admin"],// "introduction":"I am a super administrator",// "avatar":"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",// "name":"Super Admin"}}Map<String,Object> map = new HashMap<>();map.put("roles","admin");map.put("introduction","I am a super administrator");map.put("avatar","https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");map.put("name","Super Admin");return Result.ok(map);}
}
3.2、修改登录前端
(1)修改接口路径

原代码:

# just a flag
ENV = 'development'# base api
VUE_APP_BASE_API = '/dev-api'

(2)修改js文件

原user.js文件在vue-admin-template\src\api目录下。

内容:

import request from '@/utils/request'export function login(data) {return request({url: '/vue-admin-template/user/login',method: 'post',data})
}export function getInfo(token) {return request({url: '/vue-admin-template/user/info',method: 'get',params: { token }})
}export function logout() {return request({url: '/vue-admin-template/user/logout',method: 'post'})
}

修改user.js文件的内容:

import request from '@/utils/request'export function login(data) {return request({url: '/admin/vod/user/login',// url: '/vue-admin-template/user/login',method: 'post',data})
}export function getInfo(token) {return request({url: '/admin/vod/user/info',//  url: '/vue-admin-template/user/info',method: 'get',params: { token }})
}export function logout() {return request({//  url: '/vue-admin-template/user/logout',url: '/admin/vod/user/logout',method: 'post'})
}

先运行模板代码,查看登录时的数据请求,查看请求后响应的数据格式,后端根据这个格式来编写代码。

再将系统登录时请求的地址改掉,链到后端去,在后端写接口,根据模板代码请求后响应的数据格式来编码。

五、跨域问题

1、什么是跨域

(1)浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。前后端分离开发中,需要考虑ajax跨域的问题。

(2)跨域的本质:浏览器对Ajax请求的一种限制

(3)这里我们可以从服务端解决这个问题

2、配置

在Controller类上添加注解

@CrossOrigin //跨域

(硅谷课堂项目)Java开发笔记4:前端基础知识(二)相关推荐

  1. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  2. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

  3. java上课笔记大全_JAVA基础知识上课笔记

    1.八种数值类型: int short long float double char byte boolean 2.两次转换类型:自动类型转换,强制类型转换. 在某种条件下系统自动完成类型转换, 1) ...

  4. web项目java程序的作用_基础知识(javaWeb工程目录结构)及各文件夹的作用

    在Eclipse中只要创建一个Dynamic Web Project,就可以根据创建向导创建出一个典型Java Web站点的目录结构.除非有特殊需要,在大多数情况下都没有必要修改这个目录结构,这也是W ...

  5. Android音频开发(一):音频基础知识

    一.Android音频开发(一):音频基础知识 二.Android音频开发(二):录制音频(WAV及MP3格式) 三.Android音频开发(三):使用ExoPlayer播放音频 四.Android音 ...

  6. (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口

    文章目录 (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口 1.项目概述 1.1 项目介绍 1.2 硅谷课程流程图 1.3 硅谷课堂功能架构 1.4 硅谷课堂技术架构 1. ...

  7. 「尚硅谷与腾讯云官方合作」硅谷课堂项目视频发布

    硅谷课堂是尚硅谷与腾讯云官方合作的项目,是一款基于微信公众号B2C模式的在线学习平台.项目包含后台系统和微信公众号部分,采用前后端分离开发模式. 本套项目教程针对有一定开发经验的Java程序员精心打造 ...

  8. Java 开发笔记 - wangEditor 编辑器图片上传

    Java 开发笔记 - wangEditor 编辑器图片上传 前言 转型 java 开发后入手的第一个项目,写写博客记录一下 该项目使用的是 sping boot + mybatis plus + t ...

  9. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】

    学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...

最新文章

  1. Go 学习笔记(47)— Go 标准库之 strconv(string/int 互相转换、Parse 字符串转换为指定类型、Format 指定类型格式化为字符串)
  2. IDEA运行第一个Spring Boot应用程序
  3. XML配置里的Bean自动装配与Bean之间的关系
  4. DS5020配置集群存储
  5. matlab计算轮廓曲率半径,用matlab求出最小曲率半径曲线方程实例
  6. python光标图片获取
  7. win10服务器怎么连接显示器不亮,Win10检测不到第二个显示器怎么解决?Win10外接显示器黑屏解决方法...
  8. 国家c语言计算机二级,国家计算机二级考试 C语言基本知识.pdf
  9. 模拟django-simple-captcha实现中文验证码、数字及字母验证码、计算题验证码功能
  10. Exchange Server 2013 运维系列——恢复已删除邮件
  11. 尼克尔镜头上边的字表示什么?
  12. 云班课在计算机,云班课电脑版
  13. 常用的数据库统计SQL语句
  14. 无线服务器网速加快,无线路由器网速慢怎么办?
  15. Android开发之LitePal数据库的使用(参考于《Android 第一行代码》)
  16. 房子也许是租来的,但生活不是
  17. centos8使用技巧与阿贝云服务器
  18. oracle 11g创建数据库教程
  19. 图像识别与检测技术的创新
  20. Python功能运用

热门文章

  1. 用Unity做一个小Demo入门Unity
  2. 前端程序调试方法总结--高级版
  3. 很多情侣看了后,晚上再不关机了!
  4. win10/ubuntu18.04 双系统开机黑屏,无法通过grub 选择系统,直接进入Ubuntu系统
  5. Hadoop生态之Mapreduce
  6. Docker容器引擎
  7. 鸿蒙系统概述(HarmonyOS)学习这一篇就够了!
  8. 刘强东的大格局:京东要抢食亿万级货运出行市场!
  9. 中大型公司的开发流程
  10. 极客星球 | 图像技术在上亿规模实拍图片中的应用