【腾讯云 Cloud Studio 实战训练营】用于编写、运行和调试代码的云 IDE泰裤辣

文章目录

    • 一、引言✉️
    • 二、什么是腾讯云 Cloud Studio🔍
    • 三、Cloud Studio优点和功能🌈
    • 四、Cloud Studio初体验(注册篇)🎆
    • 五、Cloud Studio实战演练(实战篇)🔬
      • 1. 初始化工作空间
      • 2. 安装 antd-mobile
      • 3. 安装 less 和 less-loader
      • 4. 暴露 webpack 配置文件
      • 5. 修改 config/webpack.config.js 文件
      • 6. 安装 normalize
      • 7. 上传项目需要的素材
      • 8. 替换App.js主文件
      • 9. 创建indes.less文件并上传代码
      • 10. 启动该项目
      • 11. 清理实验
    • 六、Cloud Studio体验心得🫂
    • 七、总结🪢
    • 八、使用过程中常见错误及解决办法✅
      • 问题① dev脚本启用失败❓
      • 问题② img未添加alt属性❓
    • 九、参考链接

一、引言✉️

​ 随着互联网的的普及和发展,越来越多的程序开发项目逐渐在向云端转移,得益于互联网的传输稳定以及安全高效,使得开发人员可以在任何地方进行开发,并且可以方便与其他人员进行协同开发,共同推进项目进度。其次,随着云服务技术的不断发展,有很多的开发工具和开发环境别迁移到云端,云服务商能够提供稳定、高效且安全的云服务,满足程序员随时随地在云端进行开发、测试、部署、调试等一系列工作流程


​ 这些工具可以在云端创建和管理项目,提供在线编辑和调试等功能,使得开发过程更加高效和便捷。从传统开发模式到在线开发方式的转变,传统开发使得一个团队不需要在同一地方进行协作,而在线开发使得团队协作的方式发生了改变,团队成员可以在不同的地点进行协作,会更加灵活,能够适应现代快速变化的项目需求


​ 伴随着开发的方式转变,开发人员不再需要配置本地端的开发环境和开发工具,大大减轻了开发环境,化繁为简,变得更加简单和方便。将开发环境下沉,为开发者们提供了便捷,无需进行复杂的配置。接下来,向大家介绍一个用于编写、运行和调试代码的云IDE—— 腾讯云Cloud Studio🌈

二、什么是腾讯云 Cloud Studio🔍

腾讯云Cloud Studio是一个基于云端的集成开发环境(IDE),它允许开发人员在云端上编写、编译、调试和部署代码。Cloud Studio提供丰富的功能,包括:

  • 支持多种编程语言,包括Python、Java、JavaScript、PHP和Go
  • 内置代码编辑器、调试器和终端
  • 支持Git和Subversion等版本控制系统
  • 支持云端资源管理,包括云服务器、云存储和云数据库
  • 支持自动化部署

Cloud Studio是一个强大的开发工具,它可以帮助开发人员提高开发效率和质量。它适用于所有类型的开发人员,包括初学者、专业开发人员和企业开发人员。
image-20230810162418265

三、Cloud Studio优点和功能🌈

打造了云端开发环境:加速开发流程配置化,用配置定义云端开发环境,提升开发效率,拥有更弹性的云上开发资源。

推出了AI代码助手:直接在 Cloud Studio 里唤起 AI代码助手,让你拥有专业的研发伙伴,与您一起更高质量的完成编码工作,事半功倍。

推进了开发协作:邀请伙伴一起进入开发,解决开发问题,提高开发效率。 或者您也可以创建团队

加速了部署应用:一键部署,智能识别 30+ 主流前后端框架。本地 IDE ,也可以体验,我们已全面支持 VS Code 市场插件。
工作空间

探索未来 协作编码的无限可能🌟

四、Cloud Studio初体验(注册篇)🎆

注册入口👉https://cloudstudio.net/

🧭导航至此界面,点击“注册/登录”。
image-20230810093847190
🔎提供了以下三种注册或登录方式。这边采用“微信”的注册登录方式。
image-20230810094043750
🔓打开微信“扫一扫”的功能,扫码授权即可注册登录。
image-20230810094440299
®️ 微信授权后,界面即刻跳转至如下界面,注册成功。
image-20230810094714962

五、Cloud Studio实战演练(实战篇)🔬

1. 初始化工作空间

初始化React 的工作空间—React 框架模板
image-20230810113208703
工作开发空间初始化界面,动画演示。
lab1 Rect场景初始化动画

2. 安装 antd-mobile

Ant Design Mobile是Ant Design的移动规范的React实现,是一个基于Preact/React/React Native的UI组件库。它具有高度可配置的UI样式,拓展性更强,可以轻松适应各类产品风格,并服务于蚂蚁及口碑无线业务。

yarn add antd-mobile@^5.32.0

image-20230810114635266

3. 安装 less 和 less-loader

  • Less是一种CSS预处理器,它增加了变量、函数、嵌套和其他高级功能,使得CSS更易于扩展和组织。
  • Less-loader是Webpack的一个模块加载器,它的作用是在Webpack中处理和转换Less文件,将Less代码编译成CSS代码,并加载到页面中。
  • 使用Less-loader之前,需要先安装less和less-loader依赖包。
yarn add -D less@^3.12.2 less-loader@^7.0.1

image-20230810113450438

4. 暴露 webpack 配置文件

yarn eject

image-20230810114131287

完成命令之后,项目根目录会出现一个config文件夹,里面是一些配置相关的脚本,也可以看到 package.json 中多了很多属性值,如 “dependencies”.

5. 修改 config/webpack.config.js 文件

找到 config/webpack.config.js 文件,找到第60行左右,这块是设置 css 相关的代码。

# 复制一下sass的代码,改为less
// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
// 新增加 Less 代码
const lessRegex = /\.(less)$/;
const lessModuleRegex = /\.module\.(less)$/;

image-20230810114947931
继续向下搜索sass,位置在 510 行左右,能够找到以下代码。

和之前配置一样,仿照sass的配置,进行less的配置。

// less
{test: lessRegex,  // 有改动exclude: lessModuleRegex,  // 有改动use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,},'less-loader'  // 有改动),sideEffects: true,
},
{test: lessModuleRegex,  // 有改动use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,modules: {getLocalIdent: getCSSModuleLocalIdent,},},'less-loader'  // 有改动),
},

image-20230810115730961

这样就完成了webpack.config.js配置less,可以在项目中使用less样式了。

6. 安装 normalize

Normalize.css 是CSS重置的现代替代方案,可以为默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css是一种现代的、为HTML5准备的优质替代方案。

yarn add -D normalize.css@^8.0.1

image-20230810120125915

7. 上传项目需要的素材

以前上传服务器代码,需要使用 Scp 命令或者装 Remote SSH 插件支持,Cloud Studio 可以很方便默认支持文件上传与下载等常规的操作,与本地 IDE 体验一致:

  • 可以直接拖动文件到 IDE 编辑区域(本文使用方式)
  • 右击 IDE 编辑区域"上传"

直接将 img 文件夹拖动到src目录下即可。(点击下载img压缩包)


如下图演示操作。

lab1 本地img文件夹拖入云端开发平台演示

8. 替换App.js主文件

以下是点餐系统的主要业务代码,复制到src/App.js直接替换即可。

image-20230810120730795

import './App.css';
import React, { useState } from 'react'
import { NavBar, Toast, Swiper, SideBar, TabBar, Badge } from 'antd-mobile'
import {AppOutline,ExclamationShieldOutline,UnorderedListOutline,UserOutline,
} from 'antd-mobile-icons'
import BannerImg from './img/banner.png'
import HotImg from './img/hot.png'
import Food1Img from './img/food1.png'
import Food2Img from './img/food2.png'
import CartImg from './img/cart.png'
import './index.less'
import "normalize.css"function App() {const [activeKey, setActiveKey] = useState('1')const tabbars = [{key: 'home',title: '点餐',icon: <AppOutline />,},{key: 'todo',title: '购物车',icon: <UnorderedListOutline />,badge: '5',},{key: 'sale',title: '餐牌预告',icon: <ExclamationShieldOutline />,},{key: '我的',title: '我的',icon: <UserOutline />,badge: Badge.dot,},]const back = () =>Toast.show({content: '欢迎进入点餐系统',duration: 1000,})const items = ['', '', '', ''].map((color, index) => (<Swiper.Item key={index}><img style={{width: '100%'}} src={ BannerImg }></img></Swiper.Item>))const tabs =  [{ key: '1', title: '热销' },{ key: '2', title: '套餐' },{ key: '3', title: '米饭' },{ key: '4', title: '烧菜' },{ key: '5', title: '汤' },{ key: '6', title: '主食' },{ key: '7', title: '饮料' },]const productName = ['小炒黄牛肉','芹菜肉丝炒香干','番茄炒鸡蛋','鸡汤','酸菜鱼','水煮肉片','土豆炒肉片','孜然肉片','宫保鸡丁','麻辣豆腐','香椿炒鸡蛋','豆角炒肉']const productList = productName.map((item, key) => {return {name: item,img: key % 2 === 1 ? Food1Img : Food2Img}})return (<div className="App"><NavBar onBack={back} style={{background: '#F0F0F0',fontWeight: 'bold'}}>点餐</NavBar><div className='head-card'><Swiperstyle={{'--border-radius': '8px',}}autoplaydefaultIndex={1}>{items}</Swiper></div><div className='product-box'><SideBar activeKey={activeKey} onChange={setActiveKey}>{tabs.map(item => (<SideBar.Item key={item.key} title={item.key === '1' ? <div><div className='flex-center'><img style={{display: 'block',width: '16px',marginRight: '5px'}} src={ HotImg }></img><div>{ item.title }</div></div></div> : item.title} />))}</SideBar><div className='product-right'><div className='product-title'>热销</div><div className='product-list'>{productList.map((item, key) => {return (<div className='product-item'><div className='product-item-left'><img style={{display: 'block',width: '76px',marginRight: '5px'}} src={ item.img }></img><div className='product-item-left-info'><div><div className='product-item-left-info-name'>{ item.name }</div><div className='product-item-left-info-number'>月售{key + 1}0 赞{key * 5}</div></div><div className='product-item-left-info-price'>¥10</div></div></div><div className="cart"><img style={{display: 'block',width: '30px',marginRight: '5px'}} src={ CartImg } onClick = { () =>Toast.show({content: '添加购物车成功'}) }></img></div></div>)})}</div></div></div><TabBar>{tabbars.map(item => (<TabBar.Itemkey={item.key}icon={item.icon}title={item.title}badge={item.badge}/>))}</TabBar></div>);
}export default App;

9. 创建indes.less文件并上传代码

在 src 目录下,创建一个 index.less 文件,将以下 less 相关的代码复制到该文件中即可。

lab1 React创建index.less文件

.head-card {padding: 10px 20px;box-sizing: border-box;
}.flex-center {display: flex;align-items: center;
}.product-box {display: flex;align-items: center;width: 100%;height: calc(100vh - 45px - 130px - 50px);
}.product-right {flex: 1;height: 100%;
}.product-title {font-family: PingFangSC-Regular;font-size: 14px;color: #000000;text-align: left;padding-bottom: 10px;
}.product-list {height: calc(100% - 24px);overflow-y: auto;
}.product-item {position: relative;width: 100%;display: flex;align-items: center;justify-content: space-between;padding-left: 10px;box-sizing: border-box;margin-bottom: 10px;&-left {display: flex;&-info {padding-left: 3px;box-sizing: border-box;display: flex;flex-direction: column;justify-content: space-between;&-name {font-family: PingFangSC-Regular;font-size: 14px;color: #000000;text-align: left;}&-number {padding-top: 3px;font-family: PingFangSC-Regular;font-size: 11px;color: #787878;text-align: left;}&-price {font-family: PingFangSC-Regular;font-size: 18px;color: #FF1800;text-align: left;}}}
}.cart {position: absolute;right: 10px;bottom: 0;
}

image-20230810121357356

复制完成后,在控制台中输入 yarn dev即可启动该项目。

  • Cloud Studio 内置预览插件,可以实时显示网页应用,当代码发生改变之后,预览窗口会自动刷新,即可在 Cloud Studio 内实时开发调试网页了
  • 因为本项目是移动端H5的项目,所以需要打开“toggle device”按钮查看样式。
  • 提供了二唯码在手机端进行调试。

10. 启动该项目

yarn dev

image-20230810161839296

11. 清理实验

  • 先停止项目

image-20230810175155239

  • 再删除项目

image-20230810175232467

六、Cloud Studio体验心得🫂

所见即所得,腾讯云 Cloud Studio泰裤辣

利用云端在线开发环境,为开发者提供便利的同时,业缩短了项目上线的成本。真正做到了“降本增效”

🔍方便的访问:由于Cloud Studio是基于浏览器的,用户可以从任何地方的设备上访问它,只需有网络连接和兼容的浏览器即可。这使得团队成员可以轻松地在不同的位置进行协作和编码。

⚒️集成的工具和功能:Cloud Studio通常提供了一系列内置的工具和功能,如代码编辑器、调试器、版本控制系统(如Git)、终端等。这些集成的工具可以提高开发效率,减少切换不同工具之间的时间和困扰。

🤝协作和共享:Cloud Studio通常支持多人协作,团队成员可以同时在同一个项目中进行编辑和调试。此外,用户可以轻松地共享代码和项目,方便团队成员之间的交流和反馈。

📢 灵活的配置和扩展性:一些Cloud Studio平台允许用户根据自己的需求进行自定义配置,例如选择喜欢的主题、插件和工具集。这使得用户能够根据自己的偏好和需求来打造一个适合自己的开发环境。

七、总结🪢

​ 每个人对Cloud Studio的体验可能会有所不同,这取决于个人的需求、习惯和使用场景。有些人可能喜欢在线编码和协作的便利性,而另一些人可能更喜欢本地安装的IDE。如果你也对Cloud Studio感兴趣,我建议你亲自尝试一下,看看它是否适合你的工作流程和需求。

欢迎大家一起探索 Cloud Studio社区更多的功能,为工作中进行赋能!

八、使用过程中常见错误及解决办法✅

问题① dev脚本启用失败❓

ERROR in ./src/index.js 9:2
Module parse failed: Unexpected token (9:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
| const root = ReactDOM.createRoot(document.getElementById('root'));
| root.render(
>   <React.StrictMode>
|     <App />
|   </React.StrictMode>webpack 5.88.2 compiled with 1 error in 352 ms

image-20230810142639540
💢原因分析

“dev” 脚本用于在开发过程中启动开发服务器、监视文件变化并重新编译代码、启动开发工具等。

因为本项目是采用React框架,所以要使用React脚手架(如Create React App)

✅解决:在pakage.json配置文件,定位到scripts,添加如下命令。

"dev": "react-scripts start"

image-20230810151320549

问题② img未添加alt属性❓

image-20230810150452834

WARNING in [eslint] 
src/App.jsLine 55:7:    img elements must have an alt prop, either with meaningful text, or an empty string for decorative images  jsx-a11y/alt-textLine 117:17:  img elements must have an alt prop, either with meaningful text, or an empty string for decorative images  jsx-a11y/alt-textLine 136:23:  img elements must have an alt prop, either with meaningful text, or an empty string for decorative images  jsx-a11y/alt-textLine 150:23:  img elements must have an alt prop, either with meaningful text, or an empty string for decorative images  jsx-a11y/alt-textwebpack compiled with 1 warnin

✅原因分析及解决办法🌈:

这个警告是由ESLint插件jsx-a11y/alt-text引起的,它要求在<img>元素中添加alt属性,以提供有意义的文本描述或为空字符串以表示装饰性图像。

  1. 找到报错文件src/App.js
  2. 在文件中找到相应的行号,根据警告信息,这些行分别是55、117、136和150。
  3. 对于每个报错的<img>元素,为其添加alt属性。

如下图所示。

image-20230810151320549
image-20230810162127262

欢迎使用腾讯云 Cloud Studio 开启您的云端之旅☁️

九、参考链接

🔴腾讯云活动社区

🟡Cloud Studio_在线编程_在线IDE_WebIDE_CloudIDE_VS Code-腾讯云

🟢腾讯云 Cloud Studio 在线开发平台

🔵腾讯云 Cloud Studio 实战训练营

🔚完结🔚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记-JAVAJVM-JVM的基本结构及概念

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 什么是JVM 原文连接&#xff1a; 原文连接 JVM是J…

谷歌推出AI模型机器人RT2 将文本和图像输出为机器人动作

去年年底&#xff0c;ChatGPT火遍全球&#xff0c;全世界都见识了大语言模型的强大力量。人们对大模型不再陌生&#xff0c;开始使用基于大模型的应用绘画、作图、搜索资料、设计剧情等&#xff0c;而妙用不止于此。谷歌推出了Robotics Transformer 2(RT2)&#xff0c;这是一个…

分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

文章目录 1. kafka 生产者发送消息整体架构2. Kafka 生产者重要参数配置01. acks02. 消息传递时间03. linger.ms04. buffer.memory05. batch.size06. max.in.flight.requests.per.connection07. compression.type08. max.request.size09. receive.buffer.bytes和 send.buffer.b…

【PyQt5+matplotlib】获取鼠标在canvas上的点击坐标

示例代码&#xff1a; import sys import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasclass MyMainWindow(QMainWindow):de…

UE4 像素流 学习笔记

使用场景&#xff1a; 1、登录服务器&#xff0c;服务器上安装node.js Download | Node.js (nodejs.org) 点击该网址 点击Windows Installer 2、登录服务器&#xff0c;拷贝本地UE Pixel Streaming包到服务器 启用插件后重启该项目 然后打包 打包成功过后创建快捷方式 将该I…

SDU Crypto School - 计算不可区分性1

Encryption: Computational security 1-4 主讲人&#xff1a;李增鹏&#xff08;山东大学&#xff09; 参考教材&#xff1a;Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography - Principles and Protocols. 什么是加密 首先&#xff0c;加密方案的目的在于…

网络:CISCO、Huawei、H3C命令对照

思科、华为、锐捷命令对照表 编号思科华为锐捷命令解释1 2writesavesave保存3456 如果你所处的视图为非系统视图&#xff0c;需要查看配置的时候&#xff0c;需要在该配置命令前加do。 在特定的视图之下&#xff0c;有对应的特定命令。例如&#xff0c;在接口视图下的ip addre…

Ubuntu18.04使用carla0.9.5联合仿真搭环境报错

Ubuntu18.04使用工程与carla0.9.5联合仿真报错 1 File "/home/cg/Auto_driving/src/ros-bridge/carla_ros_bridge/src/carla_ros_bridge/client.py", line 18, in <module>from carla_ros_bridge.bridge_with_rosbag import CarlaRosBridgeWithBagFile "…

[保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

题目链接&#xff1a; 堆栈的使用_牛客题霸_牛客网 描述 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式&#xff0c;push 和 pop。其中 push一个值会将其压入栈顶&#xff0c;而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述&#xff1a; 对于…

Zabbix自动注册服务器及部署代理服务器

文章目录 一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 删除原来配置5.2 添加代理5.3 创建主机…

c语言——三子棋

基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计&#xff0c;.h文件为游戏的函数声明&#xff0c;test.cpp文件用于测试游戏运行。 需要用到的头文件&#xff1a; #include <stdio.h> #include <stdlib.h>//rand&srand #include <time.h>//时间相…

[oeasy]python0083_[趣味拓展]字体样式_正常_加亮_变暗_控制序列

字体样式 回忆上次内容 上次了解了 一个新的转义模式 \033 逃逸控制字符 esc esc 让输出 退出 标准输出流进行 控制信息的设置 可以 清屏也可以 设置光标输出的位置 还能做什么呢&#xff1f; 可以 设置 字符的颜色吗&#xff1f;&#xff1f;&#xff1f;&#x1f914; 查…

利用Simulink Test进行模型单元测试 - 1

1.搭建用于测试的简单模型 随手搭建了一个demo模型MilTestModel&#xff0c;模型中不带参数 2.创建测试框架 1.模型空白处右击 测试框架 > 为‘MilTestModel’创建 菜单 2.在创建测试框架对话框中&#xff0c;点击OK&#xff0c;对应的测试框架MilTestMode_Harness1就自动…

第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先&#xff0c;来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后&#xff0c;集群某个节点将回复该数据包&#xff0c;并将该数据包…

Android Jetpack

Jetpack 是一个由多个库组成的套件&#xff0c;可帮助开发者遵循最佳实践、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码&#xff0c;让开发者可将精力集中于真正重要的编码工作。 1.基础组件 &#xff08;1&#xff09;AppCompat&#xff1a;使得支持较低…

Qt画波浪球(小费力)

画流动波浪 #ifndef WIDGET3_H #define WIDGET3_H#include <QWidget> #include <QtMath> class widget3 : public QWidget {Q_OBJECT public:explicit widget3(QWidget *parent nullptr);void set_value(int v){valuev;}int get_value(){return value;} protecte…

vue中vuex的五个属性和基本用法,另加js-cookie的使用

VueX 是一个专门为 Vue.js 应用设计的状态管理构架&#xff0c;统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。 Vuex有五个核心概念&#xff1a; state, getters, mutations, actions, modules。 1. state&#xff1a; vuex的基本数据&…

【Linux】-- 进程间通信

目录 一、进程间通信介绍 二、管道 1.什么是管道&#xff08;pipe&#xff09; 2.重定向和管道 &#xff08;1&#xff09;为什么要有管道的存在 &#xff08;2&#xff09;重定向和管道的区别 3.匿名管道 &#xff08;1&#xff09;匿名管道原理 &#xff08;2&…

SpringCloud实用篇5——elasticsearch基础

目录 1.初识elasticsearch1.1 了解ES1.1.1 elasticsearch的作用1.1.2 ELK技术栈1.1.3 elasticsearch和lucene1.1.4 总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3 es的一些概念1.3.1 文档和字段1.3.2 索引和映射1.3.3 mysql与elasticsearch 1.4 部署单点…