小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
CSS是Casonading Style Sheet(层叠样式表)的缩写。CSS是一种标记语言,用于为HTML文档定义布局。例如,CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等方面。运用CSS样式可以让页面变得更美观。
在小程序的开发中,例如容器、组件的大小,背景图片等等,都需要进行设置参数。虽然可以在.js文件中直接进行样式排版,但是如果是小代码那还不是很乱,而一个小程序少则几百的代码量,如果不将样式与内容分隔开就会很乱。而CSS又是一个功能十分强大的工具,所以对于小程序开发很重要。
对于CSS的学习我认为最好是能借一本书来大致了解语法和一些基本用法就好。不用太深究,而是采用不懂就学的方式。如果在小程序开发中遇到问题,在结合书籍与网络上的资料来解决。
ps:在小程序开发中,每一个小程序平台都可能有自己的样式格式。虽然语法和大部分样式都是和CSS一样的,不过在实战中要结合平台的规则来使用。
p //选择器
{
color:red; //一条声明,color 是属性,red 是值
text-align:certer;
}
(1).选择器通常是需要改变样式对的HTML元素。
(2).每条声明由一个属性和一个值组成。
(3).属性是希望设置的样式属性。
(4).每个属性都有一个值,属性和值用冒号隔开。
,CSS声明总是以分号(;)结束,并用大括号({})括起来。
Hell
----------------------------------------
# paral
{
color:red; //一条声明,color 是属性,red 是值
text-align:certer;
}
,id是唯一,其样式的以#来定义。
(2)class的方法
class选择器用于描述一组元素的样式,class选择器有别于id选择器,class可以在多个元素中使用。class选择器在HTML中以class属性表示,在CSS中,类选择器以一个点“.”号显示。在以下的例子中,所有拥有center类的HTML元素均为居中,例如:
.certer
{
text-align:certer;
}
CSS学习指引
如果说CSS是小程序开发的外表,那么JavaScript就是血肉了。在进行开发时,大部分的代码都是使用JavaScript来写的。这可能和网页设计不同,网页设计则是HTML。所以对于做小程序的小伙伴可以不用急着学HTML。
因为JavaScript里边的内容很多,不过我的建议还是和上边一样先大致了解语法和一些基本用法,在实战中去学。处理基本语法和用法外,应该着重了解,
JavaScript学习
学习链接:
React学习路径
React框架总结
1.网络上的资源相对较少,所以建议可以借书。
因为我们需要用npm来使用脚手架进行开发,而npm包管理工具是绑定在Node.js框架中的。
官方链接
官方中文站点
通过npm安装。
npm install -g webpack //全局安装方式
npm install --save-dev webpack //项目目录安装方式
如虎牙的:
//提示:为了保证您的安装速度,可以先切换为淘宝源后,再执行后续指令。
npm config set registry https://registry.npm.taobao.org
mkdir hello-world //生成文件夹 hello-world 为文件夹名称
cd hello-world // 移到该目录下
npm init -y
npm i -D @hyext/cli
每个平台都不一样,可以参考平台的开发手册。
npx hyext init
在创建完成之后
在hello-world目录下执行下面的指令 ,即之前创建的目录
npx hyext start
成功启动本地服务后,可点击访问,上图中的链接为https://localhost:18080/index_web_video_com.html
每个平台都大不相同,不都一下几个是基本是一样的。
条件在程序开发中是必不可少的,因为程序需要面对用户的多种要求。
React 条件渲染基本上是通过JavaScript条件运算符(例如 ,if语句、“与”逻辑、三元表达式)
if --- else 语句
如if(this.state.num>=0 && this.state.num <= 2)
{
return(
<Text className="tip_text1">{this.state.num+1}/3</Text>
)
}
2.“与”逻辑
return(
this.state.num >=0 &&
<Text className="tip_text1">{this.state.num+1}/3</Text>
)
3.三元表达式
valu_ans = this.state.val >0 ?( this.state.val+1):1;
1.setTimeout()
:到给定的时间后执行其中指定的函数,只执行一次
setTimeout( () => this.time_q(),3900);
值得说明一下:
() => this.time_q() //是JavaScript中调用函数的一种方式被称为箭头函数,() => 前边这个括号中可以放参数,如果调用的函数需要参数的话。
2.setInterval()
:到给定的时间后执行其中指定的函数,一直执行
this.timer = setInterval ( () => {
this.update();
},60000); //相当于设置一个计时器 timer ,这个计时器每隔60秒调用一次 update()函数。
在这里值得说明一下:
this.update(); //是类调用自己的函数或变量
React 之所以定义这个概念,目的就是仅仅通过更新React组件的状态,就可以实现重新渲染用户界面的操作。
要在React 组件类内部,要定义constructor()构造方法,以及render()方法。
这里先讲constructor()构造方法
constructor (props) {
super(props);
this.state = { //在State中设置组件类的变量,可以有数组。
time:1,
hid:1,
}
逗号
隔开,不能是分号。setState()函数
this.setState({
num : (this.state.num+1),
val :value ,
})
//注意如果要更新多个变量记得用花括号括起来,且用逗号隔开。
if(this.state.num ==4)
{
this.handleJump_app();//其中handleJump_app() 是组件类中的函数。
}
componentDidMount()
函数:在组件加载之后,一次性调用 componentDidMount。这是最常用的,可以在这里设置计时器。
componentDidMount(){
setTimeout( () => this.time_q(),3900);
}
React 中监听事件十分容易,只需要个React 元素添加 onClick 、onKeyDown
render()
{
return(
<button onClick = {this.handleClick}>React 实战</button>
)
}
// 注意 调用的函数需要用花括号括起来。
在上面代码中,为组件按钮添加了一个onClick 点击事件,当用户点击按钮时就会触发handleClick的函数事件
通过 TouchableOpacity
容器将 文本组件放在里边即可。
<TouchableOpacity className="type" onPress={this.handleJump_app}>
<Text className="type_text">返回大厅</Text>
</TouchableOpacity>
需要用 View 容器将背景容器装进去才可以。
return (
<View className="container">
<BackgroundImage
source={require('./img/background.jpg')} //背景图片的资源个式
className="background">
</BackgroundImage>
</View>
)
这个组件很重要,在React Native中,View容器组件支持Flexbox布局、样式、触摸事件处理和一些无障碍功能,它可以被放到其他容器组件里,也可以包含任意多个子组件。
该方法太重要了所以我把它作为一个模块来讲。
render方法是组件规范中在创建组件时唯一必需
的方法。它必须返回一个子元素、null或false。子元素可以是已声明的组件(如View组件或Text组件),也可以是已定义的其他组件(如已创建并导入到文件中的Button组件)。
render()
{
return(
<View>
<Text>Hello</Text>
<View>
)
}
render()
{
return(
<SomeComponent />
)
}
render()
{
if(something == true){
return(
<View>
<Text>Hello</Text>
<View>
)
}
else
{
return(
<View>
<Text>Bye</Text>
<View>
)
}
)
}
重要
ans()
{
return (
<Text className="ans_text">上一题:</Text>
)
}
render()
{
return(
{this.ans()} //注意需要用花括号括起来
)
}
如果返回的组件大于两个就需要用View 容器组件来装。
如上面的ans()函数
return(
<View>
<Text className="tip_text2">游戏结束!</Text>
<Text className="tip_text2">将于一分钟后跳转到大厅
</Text>
</View>
)
render()
{
return(
<View>
{this.state.ans[this.state.ans_num]}</Text>
<View>
)
}
这个是跳转界面必需的,可以参考下面代码。
import { UI } from '@hyext/hy-ui'
import React, { Component } from 'react'
import './app.hycss'
import { Route, Router } from "@hyext/router";
import { TouchableOpacity } from "react-native";
import Tip from './tip'
const { View, Text , Modal } = UI
class App extends Component {
render() {
return (
<Router initialEntries={['/main']}>
<Route path={'/main'} component={ Main }></Route>
<Route path={'/tip'} component={ Tip }></Route>
</Router>
)
}
}
class Main extends Component {
handleJump = () => {
const { history } = this.props // Router的子组件会携带history、location之类跟路由有关的对象。
history.push('/tip') // 跳转到solo页面
}
handleSomething = () => {
}
render() {
return (
<View className="container">
<View className="top">
<View className="logo_name"><Text className="color_f logo_size">头脑风暴</Text></View>
</View>
<View className="bottom_box" style={{display:'flex'}}>
{/* 点击要用onPress而不是onClick, 只有 react-native TouchableXXX系列的组件和hy-ui的Button有onPress事件 */}
<TouchableOpacity className="box_item box_item_l" onPress={this.handleSomething}>
<Text className="color_f title_b">我是考官</Text>
</TouchableOpacity>
{/*
主播出题
观众答题
*/}
<TouchableOpacity className="box_item" onPress={this.handleJump}>
<Text className="color_f title_b">我是状元</Text>
</TouchableOpacity>
</View>
<View className="ranking"><Text className="color_f">排行榜</Text></View>
<View className="power">
<View className="powers">
<Text className="power_num">5</Text>
</View>
</View>
</View>
)
}
}
export default App
HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE。HBuilder的编写用到了Java、C、Web和Ruby。这是一款我国打造的IDE。
优点是:快,是HBuilder的最大优势,通过完整的语法提示和代码输入法、代码块等,大幅提升HTML、js、css的开发效率。当然你可以用自己顺手的。
下载地址
如果你是想做一个游戏类的小程序,那么一个好的专业游戏引擎是必不可少的。下面这个是比较适合新手的,有大量的简介,可以让你快速上手。
LayaBox是2000年可乐吧创始人谢成鸿倾力打造的HTML5游戏引擎品牌,旗下产品为PC页游、APP手游、HTML5游戏提供了三端融合的技术解决方案。为手机游戏市场提供了HTML5与APP体验相同、数据互通的全新游戏模式,为APP游戏提供了全新的HTML5试玩推广营销模式。也为游戏的发行与运营提供了全方位的解决方案。
官网
在前边准备工作都做好后
mkdir huya_demo //在e盘创建一个 名叫 huya_demo 的目录文件夹
cd huya_demo //进入这个目录中
npm init -y //初始化
npm i -D @hyext/cli //安装
操作完之后就会得到这么一个文件夹
其中文件的作用我已近在上边谈过了。
npx hyext init
,这个方法是通过npx 方式来下载,其中的具体内容可能需要参考平台的手册了。
需要注意的是通过npx
方式安装的脚手架,其实是临时安装包,项目创建完成后会自动删除该安装包。不过不用太担心,不会影响开发,只是记住就好了。
安装完成后
就需要选择面向的端口(如果没有也没事,可能平台默认了)
在这里插入图片描述
在经过上一步之后项目文件夹中就会多出一些文件。
其中index.js
是观众端的入口,viewer
则是其对于的资源文件,需要再改文件夹中进行开发。index_streamer.js
是主播端的入口,对于的资源文件夹是streamer
。
之后用HBuilder X打开对于的资源文件夹在里边添加文件就可以了。
因为在开发的时候,因为这个被坑了蛮久,所以特意用一节来说明。
虽然平台能兼容大部分的CSS样式,但平台为了兼容自己,都为有一些约束。所以在开发小程序中使用样式表无效或者报错的话,就可以参考下官网的说明文档。
组件作为小程序开发必不可少的东西。在使用时要多加参考平台的说明文档。虽然组件功能都是差不多的,不过平台可能会在参数等方面有所不同。
一般接口都是平台自己独有的了,虽然功能可能类似。这就需要看官方说明文档了。不过一般接口都是获取一些平台上的数据,如果暂时用不上(一般在中后期才用)是不会影响开发的。
在做小程序的时候难免会因为一些问题而烦恼,但只要静心心来,方法总比困难多,就一定能解决的。我们享受的是在这个过程中获得知识与技能的喜悦。希望我的这篇文章可以帮助到你们!