当前位置: 首页 > news >正文

可以做设计兼职的网站有哪些工作可免费投放广告的平台

可以做设计兼职的网站有哪些工作,可免费投放广告的平台,怎么做注册账号的网站,超频三网站谁家做的文章分为三部分讲解,项目采用vue-cli vue/cli-plugin-e2e-cypress配合讲解 vue-cli项目生成 基本配置(虽然是傻瓜式?) 生成项目(官网爸爸)npm install -g vue/cli // 可以用yarn 习惯npm了 vue create hello-world // 创建自己喜欢的工程吧…

文章分为三部分讲解,项目采用vue-cli + vue/cli-plugin-e2e-cypress配合讲解

vue-cli项目生成 + 基本配置(虽然是傻瓜式?)

  • 生成项目(官网爸爸)
npm install -g @vue/cli // 可以用yarn 习惯npm了
vue create hello-world // 创建自己喜欢的工程吧 最近楼主不推荐配置eslint 自己配置eslint + Prettier吧 standard标准不支持Prettier ?
复制代码
  • 修改package.json文件
"start": "vue-cli-service serve", // 开发 + 测试环境
"serve": "vue-cli-service serve --mode test", // 联调 + 后端小姐姐
"dev": "vue-cli-service build --mode dev", // 测试环境部署
"build": "vue-cli-service build", // 线上环境部署
复制代码
  • 增加配置文件
// 不同环境配置
touch .env.test
echo NODE_ENV = 'development' > .env.test
// webpack alias + webstorm配置(实在不想写../../这种)
touch vue.config.js
const path = require('path')
module.exports = {configureWebpack: {plugins: []},chainWebpack: config => {config.resolve.alias.set('@', path.join(__dirname, 'src')).set('component', path.join(__dirname, 'src', 'components')).set('config', path.join(__dirname, 'src', 'config'))
// webstorm配置
commond + ,
输出webpack
自定义配置文件 node_modules/@vue-cli/server/webpack.config.js + apply
尽情的command + B ??????
// 不喜欢用lodash get方法  觉得写起来不好看 又不是typescript 幸好有Babel爸爸
npm i '@babel/plugin-proposal-optional-chaining' -D
touch .babelrc
module.exports = {'presets': ['@vue/app'],'plugins': ['@babel/plugin-proposal-optional-chaining']
}
const a = { c: 1 }
console.log(a?.b) // 不会中断程序执行 是不是写起来很舒服
复制代码
  • 让我们写一个vue Loading插件玩玩吧 ?
import Vue from 'vue'
import Loading from './Loading' // Loading 怎么实现 自由发挥
let instance
let ZIndex = 101const LoadingBuilder = function (type) {return (options) => {if (Vue.prototype.$isServer) return falseoptions = options || {}let data = Object.assign({}, options, { type: type, ZIndex: ZIndex })instance = new Loading({data: data})instance.vm = instance.$mount()document.body.appendChild(instance.vm.$el)instance.dom = instance.vm.$elinstance.vm.open()ZIndex = ZIndex + 1return instance.vm}
}
const LoadingComponent = {}
LoadingComponent.install = function (Vue, opts = {}) {const Loading = LoadingBuilder()Vue.$loading = Loadingwindow.$loading = LoadingObject.defineProperties(Vue.prototype, {loading: {get () {return Loading}},$loading: {get () {return Loading}}})
}
export default LoadingComponent
复制代码

Cypress.io 基本配置

  • 安装Cypress在现有项目中
vue add @vue/e2e-cypress
复制代码
  • 目录介绍

    以下是自动生成的

├── tests
│   └── e2e
│       ├── plugins // 配置测试文件保存的地方
│       │   └── index.js
│       ├── specs // 写测试的地方
│       │   └── test.js
│       └── support // 写自定义命令的地方
│           ├── commands.js
│           └── index.js
复制代码
  • 修改package.json文件
"test": "vue-cli-service test:e2e --mode dev", // 本地开发用
"test:e2e": "vue-cli-service test:e2e --headless --mode dev", // 跑Jenkins用的
复制代码
  • 基本语法(官网肯定讲的比我清楚,我这个快速入门)

    • 断言语法和其他测试框架一样(支持各种断言语法,包括自定义)
      expect([]).to.be.a('Array') // 判断类型
      expect(a.b).to.exist // 判断属性是否存在
      expect(1).to.be.oneOf([1,2,3]) // 判断值是否是其中之一
      expect('testing').to.match(/^test/) // 正则匹配
      ...
      复制代码
    • UI测试(感觉和python Selenium挺像)
    describe('Test Login', () => {before(() ={}) // 开始钩子beforEach(() => {}) // 每个测试开始前的钩子it('login', () => {cy.visit('/') // 访问根目录 cy.visit('http://localhost:3000')cy.url().should('include', '/login') // 断言url 里面包含logincy.get('.user-input').type('Jack z').should('have.value', 'Jack z') // 找到input.user-input 并输入Jack z 断言输入的值是Jack zcy.get('.submit-button').click() // 获取.submit-button dom 并触发click事件cy.get('#navbar').contains('关于').should('have.class', 'is-active') // 获取id为navbar文本内容是关于且有class是is-activecy.wait(1000) // 等待1scy.pause() // 暂停cy.server({method: '', header: {token: ''}, ...}) + cy.router('method', 'url', 'config') // 这个网络请求不能debuggercy.request(method, url, config).then(() => {}) // 这个可以debuggercy.contains().find().eq().each() // 跟JQuery一样  找DOM做出UI的判断... // 支持动画测试(没用过 明试试 再补充)})after(() => {})afterEach(() => {})
    }
    ...
    复制代码
    • 自定义命令
    // 自定义 setLocalStorage
    Cypress.Commands.add('setLocalStorage', (key, value) => { window.localStorage.setItem(key, value)
    cy.setLocalStorage('a', JSON.strigify('Jack z'))
    复制代码

gitlab webhook + jenkins + jenkinsFile基本配置

  • Jenkinsfile 配置
// 项目根目录 touch Jenkinsfile
pipeline {agent {docker {image 'cypress/base:10' // 这个镜像包含了cypress运行的环境 推荐(不然你懂得 主要还得运维配合)args '-u root:root' // 权限配置  不然npm install fail~~~~}}environment {CHROME_BIN = '/bin/google-chrome' // 全局配置环境变量}// Jenkins流水线下的配合stages {stage('下载依赖') { // 第一步pipesteps {sh 'rm -rf node_modules'sh 'npm install'sh 'npm rebuild node-sass'}}stage('运行测试') { 第二步pipesteps {sh 'npm run test:e2e'}}}post {always {junit 'results/cypress-report.xml' // CI不通过的错误信息配置文件// 钉钉通知  完美通知待更新script {def msg = "【${author}】你把服务器搞挂了,老詹喊你回家改BUG!"def imageUrl = "https://www.iconsdb.com/icons/preview/red/x-mark-3-xxl.png"if (currentBuild.currentResult=="SUCCESS"){imageUrl= "http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png"msg ="【${author}】发布成功,干得不错!"}dingTalk accessToken:"xxxx",message:"${msg}",imageUrl:"${imageUrl}",messageUrl:"${BUILD_URL}"}}}
}
复制代码
  • 创建docker Jenkins

    • jenkins初始化
docker run --name devops-jenkins --user=root -p 8080:8080 -p 50000:50000 -v /opt/data/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts
docker run --name devops-registry -p 5000:5000 -v /opt/devdata/registry:/var/lib/registry -d registry
启动完jenkins后通过浏览器输入地址http://部署jenkins主机IP:端口
之后主页面上有怎么查看登录的密码
之后选择通用配置
进来之后 开始上图
复制代码

输入完管理员账号后,点击continue as admin 进入管理界面点击系统管理-插件管理中安装node

node版本管理

打包完上传文件

... 插件缺啥按啥

  • 建两个任务

    1、一个跑测试(这个可以包含第二个 个人喜好)

    建任务

    代码位置
    jenkins webhook配置(需要装gitlab webhook插件 跟GitHub webhook区别不大 但是jenkins还是蛮大的 有需要我再补充) 红线有用 copy
    流水线配置

    2、一个跑部署

    建任务

    代码位置
    某个任务结束都执行(需要装插件)
    配置打包和传输文件

  • gitlab配置

    gitlab webhook配置 箭头填写上面?画圈地方

最后,写的不对的地方,欢迎大佬更正

转载于:https://juejin.im/post/5cd4367de51d456e6d133564

http://www.lbrq.cn/news/2524267.html

相关文章:

  • 政府网站策划书站长之家seo综合
  • 怎么做游戏和网站漏洞网络营销策划
  • 网站建设不力 被问责游戏代理加盟平台
  • 通州重庆网站建设免费大数据分析网站
  • 网站制作工资企业seo排名有 名
  • 网站设计外包合同百度搜索推广收费标准
  • 电子商务网站建设属性2022十大热点事件及评析
  • 乐清做网站建设公司哪家好seo搜索引擎是什么
  • 创造力网站设计网络推销平台有哪些
  • 嘉定房产网站建设全网推广引流黑科技
  • 做搜狗网站关键词排名网络营销的盈利模式
  • 嘉兴建设网站百度一下官网网址
  • 网站做系统叫什么软件吗佛山网站建设排名
  • 图库 网站 源码各大网站收录入口
  • 未来5年网络规划设计师河南seo优化
  • 郑州app开发 丁河南关键词优化搜索
  • 湖南城乡建设部网站重庆网站外包
  • 网站掉排名淘宝的17种免费推广方法
  • 舌尖上的西安 网站怎么做网站页面设计
  • 移动网站怎么登录网络推广一个月工资多少
  • 福田网站制作公司保定seo博客
  • 济宁网站制作自媒体seo优化
  • 在淘宝上做网站靠谱吗网络营销心得体会300字
  • 企业网站一般做多宽seo推广知识
  • 外贸网站制作深圳网络推广收费标准
  • 注册网站有什么风险吗太原网站排名推广
  • 网站建设服务费是否无形资产如何做好网上销售
  • 西安做网站招聘无锡网站优化公司
  • 做好网站建设的重要性武汉seo群
  • 武汉seo什么是网站推广优化
  • Python 程序设计讲义(45):组合数据类型——集合类型:集合的常用操作
  • [Linux入门] Linux 部署本地 APT 仓库及 NFS 共享服务全攻略
  • 基于 xlsx-js-style 的 Excel 导出工具实现导出excel
  • JVM 笔记:类加载、内存管理、垃圾收集与垃圾收集器
  • 二级域名分发源码最新开源版
  • kubectl中的yaml配置详解