在Ubuntu 18.04上安装和使用Composer的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
介绍
Composer 是一个流行的 PHP 依赖管理工具,主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包,并根据项目要求安装适当的版本。
在本教程中,您将在 Ubuntu 18.04 系统上安装并开始使用 Composer。
先决条件
要完成本教程,您需要:
- 一个按照 Ubuntu 18.04 初始服务器设置指南设置的 Ubuntu 18.04 服务器,包括一个 sudo 非 root 用户和一个防火墙。
步骤 1 — 安装依赖项
在下载和安装 Composer 之前,您需要确保服务器已安装所有依赖项。
首先,通过运行以下命令更新软件包管理器缓存:
sudo apt update
现在,让我们安装依赖项。我们需要使用 curl
下载 Composer,使用 php-cli
安装和运行它。php-mbstring
包是必需的,以提供我们将使用的库的函数。git
用于下载项目依赖项,unzip
用于解压缩压缩包。您可以使用以下命令安装所有内容:
sudo apt install curl php-cli php-mbstring php-curl git unzip
安装完先决条件后,我们可以安装 Composer 本身。
步骤 2 — 下载并安装 Composer
Composer 提供了一个用 PHP 编写的安装程序。我们将下载它,验证它是否损坏,然后使用它来安装 Composer。
确保您位于主目录中,然后使用 curl
检索安装程序:
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
接下来,验证安装程序是否与 Composer Public Keys / Signatures 页面上找到的最新安装程序的 SHA-384 哈希匹配。从该页面复制哈希并将其存储为 shell 变量:
HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061
确保您用最新的哈希替换高亮值。
现在执行以下 PHP 脚本以验证安装脚本是否安全运行:
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
您将看到以下输出。
Installer verified
如果您看到 Installer corrupt
,那么您需要重新下载安装脚本,并再次检查您是否使用了正确的哈希。然后再次运行命令验证安装程序。一旦您有了经过验证的安装程序,就可以继续。
要全局安装 composer
,请使用以下命令,它将下载并安装 Composer 作为名为 composer
的系统命令,放在 /usr/local/bin
下:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
您将看到以下输出:
All settings correct for using Composer
Downloading...Composer (version 2.1.9) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
要测试您的安装,请运行:
composer
您将看到以下输出,显示 Composer 的版本和参数。
______/ ____/___ ____ ___ ____ ____ ________ _____/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_//_/
Composer version 2.1.9 2021-10-05 09:47:38Usage:command [options] [arguments]Options:-h, --help Display this help message-q, --quiet Do not output any message-V, --version Display this application version--ansi Force ANSI output--no-ansi Disable ANSI output-n, --no-interaction Do not ask any interactive question--profile Display timing and memory usage information--no-plugins Whether to disable plugins.-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.--no-cache Prevent use of the cache-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .
这验证了 Composer 在您的系统上成功安装,并且可以在系统范围内使用。
现在让我们看看如何使用 Composer 来管理依赖项。
步骤 3 —— 在 PHP 项目中使用 Composer
PHP 项目通常依赖于外部库,管理这些依赖及其版本可能会很棘手。Composer 通过跟踪您的依赖关系并使其他人能够轻松安装它们来解决这个问题。
为了在项目中使用 Composer,您需要一个 composer.json
文件。composer.json
文件告诉 Composer 它需要为您的项目下载哪些依赖项,以及允许安装每个软件包的哪些版本。这对于保持项目一致性并避免安装可能导致向后兼容性问题的不稳定版本非常重要。
您不需要手动创建此文件 —— 这样做很容易遇到语法错误。当您使用 require
命令向项目添加依赖项时,Composer 会自动生成 composer.json
文件。您可以以相同的方式添加其他依赖项,而无需手动编辑此文件。
使用 Composer 在项目中安装包作为依赖项的过程包括以下步骤:
- 确定应用程序需要哪种类型的库。
- 在 Packagist.org 上研究合适的开源库,这是 Composer 的官方包存储库。
- 选择您想要依赖的软件包。
- 运行
composer require
将依赖项包含在composer.json
文件中并安装该软件包。
让我们通过一个演示应用程序来尝试一下。
该应用程序的目标是将给定的句子转换为 URL 友好的字符串 —— 一个 slug。这通常用于将页面标题转换为 URL 路径(例如本教程的 URL 最后一部分)。
让我们从为我们的项目创建一个目录开始。我们将其命名为 slugify:
cd ~
mkdir slugify
cd slugify
现在是时候在 Packagist.org 上搜索一个可以帮助我们生成 slugs 的软件包了。如果您在 Packagist 上搜索术语 “slug”,您将会得到类似于以下结果:
!Packagist Search: easy-slug/easy-slug, muffin/slug, ddd/slug, zelenin/slug, webcastle/slug, anomaly/slug-field_type
您将在列表中的每个软件包右侧看到两个数字。顶部的数字表示软件包被安装的次数,底部的数字显示软件包在 GitHub 上被标记为喜欢的次数。您可以根据这些数字重新排列搜索结果(查找搜索栏右侧的两个图标)。一般来说,安装次数和星星数更多的软件包往往更稳定,因为有很多人在使用它们。还要检查软件包描述的相关性,以确保它是您需要的。
我们需要一个简单的字符串转换为 slug 的转换器。从搜索结果中,软件包 cocur/slugify
似乎是一个很好的选择,安装次数和星星数都还可以接受。 (软件包在截图显示的页面下方一点点。)
Packagist 上的软件包有一个 vendor 名称和一个 package 名称。每个软件包都有一个唯一的标识符(命名空间),格式与 GitHub 用于其存储库的格式相同,即 vendor/package
。我们要安装的库使用的命名空间是 cocur/slugif
。您需要这个命名空间才能在项目中要求该软件包。
现在您知道要安装的确切软件包是哪个了,运行 composer require
将其包含为依赖项,并为项目生成 composer.json
文件:
composer require cocur/slugify
当 Composer 下载依赖项时,您将看到以下输出:
Using version ^4.0 for cocur/slugify
./composer.json has been created
Running composer update cocur/slugify
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals- Locking cocur/slugify (v4.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals- Downloading cocur/slugify (v4.0.0)- Installing cocur/slugify (v4.0.0): Extracting archive
Generating autoload files
从输出中可以看出,Composer 自动决定了要使用的软件包的版本。如果现在检查您的项目目录,它将包含两个新文件:composer.json
和 composer.lock
,以及一个 vendor
目录:
ls -l
total 12
-rw-rw-r-- 1 sammy sammy 59 Oct 26 19:04 composer.json
-rw-rw-r-- 1 sammy sammy 3411 Oct 26 19:04 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Oct 26 19:04 vendor
composer.lock
文件用于存储有关安装了哪些软件包的版本信息,并确保如果其他人克隆您的项目并安装其依赖项时使用相同的版本。vendor
目录是项目依赖项的所在地。vendor
文件夹不需要提交到版本控制 —— 您只需要包含 composer.json 和 composer.lock 文件。
让我们快速看一下版本约束。如果检查您的 composer.json
文件的内容,您将看到类似于以下内容:
cat composer.json
{"require": {"cocur/slugify": "^4.0"}
}
您可能会注意到 composer.json
中版本号前面的特殊字符 ^
。Composer 支持几种不同的约束和格式来定义所需的软件包版本,以提供灵活性同时保持项目的稳定性。由自动生成的 composer.json
文件使用的插入符(^
)运算符是最大互操作性的推荐运算符,遵循语义化版本。在这种情况下,它将 4.0 定义为最低兼容版本,并允许更新到 5.0 以下的任何未来版本。
一般来说,您不需要在 composer.json
文件中修改版本约束。但是,某些情况可能需要您手动编辑约束 —— 例如,当您需要升级所需库的一个主要新版本时,或者您想要使用的库不遵循语义化版本时。
以下是一些示例,以便更好地理解 Composer 版本约束的工作原理:
约束 | 含义 | 允许的示例版本 |
---|---|---|
^1.0 | >= 1.0 < 2.0 | 1.0, 1.2.3, 1.9.9 |
^1.1.0 | >= 1.1.0 < 2.0 | 1.1.0, 1.5.6, 1.9.9 |
~1.0 | >= 1.0 < 2.0.0 | 1.0, 1.4.1, 1.9.9 |
~1.0.0 | >= 1.0.0 < 1.1 | 1.0.0, 1.0.4, 1.0.9 |
1.2.1 | 1.2.1 | 1.2.1 |
1.* | >= 1.0 < 2.0 | 1.0.0, 1.4.5, 1.9.9 |
1.2.* | >= 1.2 < 1.3 | 1.2.0, 1.2.3, 1.2.9 |
有关 Composer 版本约束的更深入视图,请参阅官方文档。
接下来,让我们看一下如何使用 Composer 自动加载依赖项。
步骤 4 — 包含自动加载脚本
由于 PHP 本身不会自动加载类,Composer 提供了一个自动加载脚本,你可以在项目中包含它,从而免费获得自动加载功能。这样可以更轻松地处理项目的依赖关系。
你需要做的唯一一件事就是在 PHP 脚本中在任何类实例化之前包含 vendor/autoload.php
文件。当你添加第一个依赖项时,Composer 会自动生成这个文件。
让我们在我们的应用程序中尝试一下。创建文件 test.php
并在文本编辑器中打开它:
nano test.php
添加以下代码,引入 vendor/autoload.php
文件,加载 cocur/slugify
依赖项,并使用它创建一个 slug:
<?php
require __DIR__ . '/vendor/autoload.php';use Cocur\Slugify\Slugify;$slugify = new Slugify();echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
保存文件并退出编辑器。
现在运行脚本:
php test.php
这将产生输出 hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
。
当新版本发布时,依赖项需要更新,让我们看看如何处理这个问题。
步骤 5 — 更新项目依赖项
每当你想要将项目依赖项更新到更新版本时,运行 update
命令:
composer update
这将检查你项目中所需的库的更新版本。如果找到更新版本并且它与 composer.json
文件中定义的版本约束兼容,Composer 将替换先前安装的版本。composer.lock
文件将被更新以反映这些更改。
你也可以通过像这样指定它们来更新一个或多个特定的库:
composer update vendor/package vendor2/package2
确保在更新依赖项后检查你的 composer.json
和 composer.lock
文件,以便其他人可以安装这些更新版本。
结论
Composer 是每个 PHP 开发人员都应该在其工具箱中拥有的强大工具。在本教程中,你安装了 Composer 并在一个简单的项目中使用了它。你现在知道如何安装和更新依赖项。
除了提供一种简单可靠的管理项目依赖关系的方式之外,它还为社区创建的 PHP 包的共享和发现建立了一个新的事实标准。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
在Ubuntu 18.04上安装和使用Composer的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Composer 是一个流行的 PHP 依赖管理工具,主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包&a…...
![](https://i-blog.csdnimg.cn/direct/a5a582ec3d794e499c7bbce940da6a62.png)
ssm 学习 ---(spring)
一、spring框架 1、基本框架 2、Beanfactory快速入门 配置清单:xml文件 (1) 导入jar包或者maven坐标 (2) 定义UserService接口以及UserService实现类 (3) 创建bean.xml配置文件,将UserService信息配置到该xml文件中; (4)编写测试代码,创…...
![](https://img-blog.csdnimg.cn/img_convert/c16325d73e082693b119b0df8b631972.png)
Jupyter Notebook安装及基本使用
Jupyter Notebook安装及基本使用 目录 Jupyter Notebook安装及基本使用方式一:Anaconda直接安装方式二:pip命令安装Jupyter使用虚拟环境 方式一:Anaconda直接安装 安装Anaconda 下载地址,输入邮箱,Windows下载 开始安…...
![](https://i-blog.csdnimg.cn/direct/ed6f35b26d0742e39dfd917c249deb20.png)
Jenkins+Maven+Gitlab+Tomcat自动化构建打包+部署
目录 环境准备 导入项目包 配置jenkins 构建项目 配置项目上线 修改项目代码测试 环境准备 本实操项目环境基于https://blog.csdn.net/Lzcsfg/article/details/140359830 首先在node01主机中操作,本次操作需要java8的版本,将之前安装的java17卸…...
![](https://i-blog.csdnimg.cn/direct/d5f4efbbfc304f41abd56f8e40b176b0.png)
Synchronized升级到重量级锁会发生什么?
我们从网上看到很多,升级到重量锁的时候不会降级,再来线程都是重量级锁 今天我们来实验一把真的是这样的吗 1.首选导入Java对象内存布局的工具库: <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-…...
![](https://www.ngui.cc/images/no-images.jpg)
【Webpack】HMR 热更新
HMR全称Hot Module Replacement,可以理解为模块热替换,指在应用程序运行过程中,替换、添加、删除模块,而无需重新刷新整个应用。 不使用热更新,我们在应用运行过程中修改了某个模块,通过自动刷新会导致整个…...
![](https://i-blog.csdnimg.cn/direct/33dae5dab27f42ab9f99ae19c774fe0c.png#pic_center)
【计算机视觉】siamfc论文复现
什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中࿰…...
![](https://i-blog.csdnimg.cn/direct/ffa31613843949589ce1486f56df4327.png)
PotatoTool 蓝队版 V1.3 发布:增强功能和性能优化
一、简介 经过广大网友的反馈和建议,我们对V1.1版本中存在的问题进行了优化。其中,我们针对MD5库进行了本地化处理,以提高查询效率。然而,这也导致了软件体积的飙升。二、优化概述 1、兼容性 兼容arm架构系统 2、UI 2.1 界面…...
![](https://i-blog.csdnimg.cn/direct/1f47b11d90fa454d9c53d970bc0a2bd5.png)
pytest常用命令行参数解析
简介:pytest作为一个成熟的测试框架,它提供了许多命令行参数来控制测试的运行方式,以配合适用于不同的测试场景。例如 -x 可以用于希望出现错误就停止,以便定位和分析问题。–rerunsnum适用于希望进行失败重跑等个性化测试策略。 …...
![](https://www.ngui.cc/images/no-images.jpg)
pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本
一、背景 通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份,随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的,每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残,解决摧残的方法就是把命令…...
![](https://i-blog.csdnimg.cn/direct/19704ac29f7c47d4a3d7fb84cd1f59e2.png)
【3D编程技巧】如何用四元数旋转矢量在相机空间进行光照计算
这里介绍一个小TIPS,很久没有这么有成就感了。我以前在学3D数学的时候,书上就有一句话,说你把矢量这些东西用久了,就应该形成一种“直觉”,仿佛这些东西就是你的左右手一样。而这次,我居然真的用“直觉”来…...
![](https://img-blog.csdnimg.cn/e45d2c47dc0f4768921ee22482b7c9bf.png)
ICMP 和 IGMP 的区别
ICMP 和 IGMP 协议 IP 层分支图 ICMP(Internet Control Message Protocol,因特网控制信息协议) 用于补充 IP 传输数据报的过程中,发送主机无法确定数据报是否到达目标主机。 ICMP 报文分为出错报告报文和查询报文两种。 若数据…...
![](https://i-blog.csdnimg.cn/direct/d110172d0a77453d88fff4f4c8b2f12f.png)
【Vue3】工程创建及目录说明
【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…...
![](https://www.ngui.cc/images/no-images.jpg)
算法学习2——排序算法(2)
上一篇介绍了几种常见且使用较多的排序算法,本章主要是一个进阶内容,介绍三个较为复杂的算法。 计数排序 (Counting Sort) 计数排序是一种适用于范围较小的整数序列的排序算法。它通过统计每个元素的出现次数,然后依次输出元素,…...
![](https://i-blog.csdnimg.cn/direct/140e852bf342412a888f56a33e57a32e.png)
嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)
1、PWM简介 (1)、什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制…...
![](https://i-blog.csdnimg.cn/direct/8f8db88936154495b0e44eca41aa60d2.png#pic_center)
python-NLP:1中文分词
文章目录 规则分词正向最大匹配法逆向最大匹配法双向最大匹配法 统计分词语言模型HMM模型 jieba分词分词关键词提取词性标注 规则分词 基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行…...
![](https://i-blog.csdnimg.cn/direct/aeb68e6dae884da284aea0fc1a928c14.png)
iOS 开发包管理之CocoaPods
CocoaPods(Objective-C 时期,支持Objective-C和swift),CocoaPods下载第三方库源代码后会将其编译成静态库.a 文件 或动态库框架.framework 文件 的形式,并将它们添加到项目中,建立依赖关系,这种…...
![](https://i-blog.csdnimg.cn/direct/d0b495620f24495e8092f7d4a7fec7da.png)
Windows搭建RTMP视频流服务器
参考了一篇文章,见文末。 博客中nginx下载地址失效,附上一个有效的地址: Index of /download/ 另外,在搭建过程中,遇到的问题总结如下: 1 两个压缩包下载解压并重命名后,需要 将nginx-rtmp…...
![](https://i-blog.csdnimg.cn/direct/c1bbb2911b464dedab877227643d4795.png)
VS2019安装MFC组件
VS2019支持的MFC版本是mfc140 ~ mfc142版本,它兼容VS2015、VS2017之前的老版本程序。 一、MFC的历史版本 MFC的历史版本如下: IDE发布时间工具集版本MSC_VERMSVCMFC版本dllVisual C6.01998V601200MSVC6.06.0mfc42.dll、mfcce400.dllVisual Studio 2002…...
![](https://i-blog.csdnimg.cn/direct/d04ef444a63a4bdd991aaffd7644ea4d.png)
Python学习—open函数,json与pickle知识点,Os模块详解
目录 1. Open函数 2.json与pickle模块 json模块 1. json.dumps() 2. json.dump() 3. json.loads() 4. json.load() pickle 模块 1. pickle.dumps() 2. pickle.dump() 3. pickle.loads() 4. pickle.load() 3.Os模块 1. Open函数 在Python中,open() 函数…...
![](https://i-blog.csdnimg.cn/direct/475a5121b94c41369b4c4d4fa6020d73.png)
基于SSM的高考志愿选择辅助系统
基于SSM的高考志愿选择辅助系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台 前台首页 院校展示 后台 后台首页 学校管理 摘要 随着高考制度的不断完…...
![](https://i-blog.csdnimg.cn/direct/c3527262007a40f8a66258ef50e3d37b.jpeg)
引领小模型潮流!OpenAI发布功能强大且成本低的GPT-4o mini
GPT-4o mini的成本比GPT-3.5 Turbo低了超过60%,其聊天表现优于Google的Gemini Flash和Anthropic的Claude Haiku。该模型从周四开始对ChatGPT的免费用户、ChatGPT Plus用户和团队订阅用户开放,并将在下周向企业用户开放。OpenAI计划未来将图像、视频和音频…...
![](https://img-blog.csdnimg.cn/img_convert/d5ea368dc3029df6f74c15554774b30f.webp?x-oss-process=image/format,png)
【考研数学】线代满分经验分享+备考复盘
我一战二战复习都听了李永乐的线代课,二战的时候只听了一遍强化,个人感觉没有很乱,永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图,永乐大帝讲课的时候也会特意点到线代前后联…...
![](https://i-blog.csdnimg.cn/direct/3e04d23f33d84a68a81fffd28145d183.png)
Java项目:基于SSM框架实现的海鲜自助餐厅系统【ssm+B/S架构+源码+数据库+毕业论文】
一、项目简介 本项目是一套基于SSM框架实现的海鲜自助餐厅系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…...
![](https://www.ngui.cc/images/no-images.jpg)
前端面试题日常练-day97 【Less】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Less中,以下哪个功能用于处理文本字间距? a) letter-spacing() b) word-spacing() c) text-spacing() d) space-between() Less中的Variables可以存储哪些类型的值ÿ…...
![](https://i-blog.csdnimg.cn/direct/18d1100910bb4213996bf66b64279445.png)
压缩视频大小的方法 怎么减少视频内存大小 几个简单方法
随着4K、8K高清视频的流行,我们越来越容易遇到视频文件体积过大,导致存储空间不足、传输速度缓慢等问题。视频压缩成为解决这一问题的有效途径,但如何在减小文件大小的同时,保证视频质量不受影响呢?本文将为你揭晓答案…...
![](https://i-blog.csdnimg.cn/direct/4503a82c7f9f42ebaebb8958a62020c0.png)
JVM:GraalVM
文章目录 一、介绍1、什么是GraalVM:2、GraalVM版本 二、两种使用模式 一、介绍 1、什么是GraalVM: GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。GraalVM的官网地址:https://www.graa…...
![](https://img-blog.csdnimg.cn/img_convert/d7da94412450e936876b463cbfb9d96c.jpeg)
海外营销推广:快速创建维基百科(wiki)词条-大舍传媒
一、维基百科的永久留存问题 许多企业和个人关心维基百科是否能永久留存。实际上,只要企业和个人的行为没有引起维基百科管理方的反感,词条就可以长期保存。如果有恶意行为或被投诉,维基百科可能会对词条进行删除或修改。 二、创建维基百科…...
![](https://i-blog.csdnimg.cn/direct/d189183aba9f4bf58bcafbe4ceaf67e6.png)
【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理
【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理 在之前我们已经学习了页面布局相关的知识,绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用,那么交…...
![](https://i-blog.csdnimg.cn/direct/f5c73569dd6d4a36a38972532a0a0c44.png)
处理uniapp刷新后,点击返回按钮跳转到登录页的问题
在使用uniapp的原生返回的按钮时,如果没有刷新会正常返回到对应的页面,如果刷新后会在当前页反复横跳,或者跳转到登录页。那个时候我第一个想法时:使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…...
![](/images/no-images.jpg)
ps如何做网站横幅/潍坊seo教程
求平均成绩 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 79662 Accepted Submission(s): 19180Problem Description假设一个班有n(n<50)个学生,每人考m(m<5)门课,求每个学生的…...
![](https://img-blog.csdnimg.cn/img_convert/4fe2f8cdcebbd34f1db3cbf41ec87254.png)
企业怎么做网站建设/google安卓手机下载
在这个系列的***部分里,我们创建了一个电子商务网站,呈示了三类URL:我们通过创建象下面这样一个ProductsController类来处理这些URL:在把上面这个类加到我们的应用中后,asp.net mvc框架就会把进来的URL自动导向到我们的控制器上的…...
![](/images/no-images.jpg)
做网站的品牌公司/淘宝seo具体优化方法
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/5e1c17807be585d0263a21431553264d.png)
wordpress下载网页/20个排版漂亮的网页设计
【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】将字符串生成艺术字pyfiglet.figlet_format选择题以下关于python代码表述错误的一项是?import pyfigletmyText"python"print("【执行】pyfiglet.figlet_format")resultpyf…...
![](/images/no-images.jpg)
网站维护的要求/新冠疫情最新情况
单项选择题 1、网络保险能解除传统保险中客户与保险机构的时间、空间制约主要体现的方式是( ) (2 分) A.一个网址 B.一对多 C.一对一 D.一个服务器 2、P2P网络借贷是( &a…...
![](/images/no-images.jpg)
wordpress视频播放器插件/国际实时新闻
m:编译所有的模块 mm:编译当前目录下的模块,当前目录下要有Android.mk文件 mmm:编译指定路径下的模块,指定路径下要有Android.mk文件 //add in 2019 0718 还要先编译,配置环境变量 work/android source bui…...